9 #define DNA_DEPRECATED_ALLOW
157 #define VPARENT_THREADING_HACK
159 #ifdef VPARENT_THREADING_HACK
197 else if (ob_dst->
mat !=
nullptr || ob_dst->
matbits !=
nullptr) {
200 0,
"Object copy: non-nullptr material pointers with zero counter, should not happen.");
201 ob_dst->
mat =
nullptr;
238 if (ob_dst->
pd->
rng) {
252 ob_dst->
avs = ob_src->
avs;
393 for (
int i = 0; i <
object->totcol; i++) {
461 cache = cache->next) {
509 if (ob->
soft !=
nullptr) {
617 ob->proxy_from =
nullptr;
661 paf = (
PartEff *)ob->effect.first;
735 if (sb->
shared ==
nullptr) {
766 while (ob->hooks.first) {
778 hmd->force = hook->
force;
780 hmd->object = hook->
parent;
781 memcpy(hmd->parentinv, hook->
parentinv,
sizeof(hmd->parentinv));
863 TIP_(
"Non-Empty object '%s' cannot duplicate collection '%s' "
864 "anymore in Blender 2.80, removed instancing"),
876 ob->proxy->proxy_from =
nullptr;
882 TIP_(
"Proxy lost from object %s lib %s\n"),
894 ob->proxy->proxy_from = ob;
899 void *poin = ob->
data;
902 if (ob->
data ==
nullptr && poin !=
nullptr) {
923 TIP_(
"Can't find object data of %s lib %s\n"),
965 if (fluidmd && fluidmd->
fss) {
1030 paf = (
PartEff *)ob->effect.first;
1087 if (paf && paf->
group) {
1098 if (ob->proxy_group) {
1151 pid_dst = pid_dst->
next, pid_src = (pid_src !=
nullptr) ? pid_src->
next :
nullptr) {
1153 if (pid_src ==
nullptr) {
1165 PointCache *point_cache_dst, *point_cache_src;
1168 point_cache_dst !=
nullptr;
1169 point_cache_dst = point_cache_dst->
next,
1170 point_cache_src = (point_cache_src !=
nullptr) ? point_cache_src->
next :
nullptr) {
1173 if (point_cache_src ==
nullptr || !
STREQ(point_cache_dst->
name, point_cache_src->
name)) {
1201 memcpy(
IDP_Array(property), dimensions,
sizeof(dimensions));
1213 if (dimensions_prop) {
1254 *workob = blender::dna::shallow_zero_initialize();
1327 float imat[4][4], mat[4][4];
1345 if (hmd->
object ==
nullptr) {
1352 float imat[4][4], mat[4][4];
1373 if (md !=
nullptr) {
1383 int active_count = 0;
1467 if (psys->part == psys_src->
part) {
1474 if (psys_dst ==
nullptr) {
1504 switch (md_src->
type) {
1515 if (fmd->
flow !=
nullptr && fmd->
flow->
psys !=
nullptr) {
1552 switch (md_dst->
type) {
1554 if (psys_dst !=
nullptr) {
1562 if (psys_dst !=
nullptr) {
1600 const bool do_copy_all,
1601 const int flag_subdata)
1605 "Trying to copy a modifier stack between a GPencil object and another type.");
1612 !
"Trying to copy a modifier stack into an object having a non-empty modifier stack.");
1661 const int num_elements = mesh_source->
totloop;
1689 if (mesh_eval ==
nullptr) {
1693 if (subdiv_ccg ==
nullptr) {
1766 object_eval->
data = data_eval;
1834 short update_flag = 0;
1874 if (update_flag != 0) {
1881 if (ob->
data ==
nullptr) {
1887 return ((
Mesh *)ob->
data)->edit_mesh !=
nullptr;
1891 return ((
Curve *)ob->
data)->editfont !=
nullptr;
1895 return ((
Lattice *)ob->
data)->editlatt !=
nullptr;
1898 return ((
Curve *)ob->
data)->editnurb !=
nullptr;
1920 return ((
const Mesh *)
id)->edit_mesh !=
nullptr;
1922 return ((((
const Curve *)
id)->editnurb !=
nullptr) ||
1923 (((
const Curve *)
id)->editfont !=
nullptr));
1925 return ((
const MetaBall *)
id)->editelems !=
nullptr;
1927 return ((
const Lattice *)
id)->editlatt !=
nullptr;
1929 return ((
const bArmature *)
id)->edbo !=
nullptr;
1947 if (em !=
nullptr) {
1953 if (((
Curve *)
id)->vfont !=
nullptr) {
1955 if (ef !=
nullptr) {
2027 if (ob->
pose !=
nullptr) {
2036 return ((ob->
mode == object_mode) || (ob->
mode & object_mode) != 0);
2079 if (obtest ==
nullptr) {
2098 return DATA_(
"Mesh");
2100 return DATA_(
"Curve");
2102 return DATA_(
"Surf");
2104 return DATA_(
"Text");
2106 return DATA_(
"Mball");
2108 return DATA_(
"Camera");
2112 return DATA_(
"Lattice");
2114 return DATA_(
"Armature");
2116 return DATA_(
"Speaker");
2118 return DATA_(
"Curves");
2120 return DATA_(
"PointCloud");
2122 return DATA_(
"Volume");
2124 return DATA_(
"Empty");
2126 return DATA_(
"GPencil");
2128 return DATA_(
"LightProbe");
2131 return DATA_(
"Empty");
2163 if (name ==
nullptr) {
2280 if (base !=
nullptr) {
2328 if (sb ==
nullptr) {
2329 ob_dst->
soft =
nullptr;
2349 for (i = 0; i < sbn->
totpoint; i++) {
2361 sbn->
keys =
nullptr;
2395 psysn->
edit =
nullptr;
2396 psysn->
pdd =
nullptr;
2398 psysn->
tree =
nullptr;
2446 if (psmd->
psys == psys) {
2477 obn->
pose =
nullptr;
2487 ListBase targets = {
nullptr,
nullptr};
2491 if (ct->tar == ob) {
2513 if (ob ==
nullptr) {
2569 uint *r_objects_len,
2574 Object **objects =
nullptr;
2575 if (ob_pose == ob_active) {
2578 ob_params.no_dup_data = unique;
2581 view_layer, v3d, r_objects_len, &ob_params);
2583 else if (ob_pose !=
nullptr) {
2586 objects[0] = ob_pose;
2610 Base *base_pose =
nullptr;
2611 Base **bases =
nullptr;
2614 if (ob_pose == base_active->
object) {
2615 base_pose = base_active;
2622 if (base_active && (base_pose == base_active)) {
2625 ob_params.no_dup_data = unique;
2628 view_layer, v3d, r_bases_len, &ob_params);
2630 else if (base_pose !=
nullptr) {
2633 bases[0] = base_pose;
2667 if (!is_subprocess) {
2694 for (
int i = 0; i < obn->
totcol; i++) {
2705 ID *id_new =
nullptr;
2706 const bool need_to_duplicate_obdata = (id_old !=
nullptr) && (id_old->
newid ==
nullptr);
2708 switch (obn->
type) {
2787 if (need_to_duplicate_obdata && !
ELEM(id_new,
nullptr, id_old)) {
2791 for (
int i = 0; i < obn->
totcol; i++) {
2798 if (!is_subprocess) {
2823 if (obn->
data !=
nullptr) {
2896 float rmat[3][3], dmat[3][3];
2985 #define TFMCPY(_v) (obtfm->_v = ob->_v)
2986 #define TFMCPY3D(_v) copy_v3_v3(obtfm->_v, ob->_v)
2987 #define TFMCPY4D(_v) copy_v4_v4(obtfm->_v, ob->_v)
3009 const short protectflag)
3013 for (i = 0; i < 3; i++) {
3015 ob->
loc[i] = obtfm->
loc[i];
3025 ob->
rot[i] = obtfm->
rot[i];
3028 ob->
quat[i + 1] = obtfm->
quat[i + 1];
3047 #define TFMCPY(_v) (object_dst->_v = object_src->_v)
3048 #define TFMCPY3D(_v) copy_v3_v3(object_dst->_v, object_src->_v)
3049 #define TFMCPY4D(_v) copy_v4_v4(object_dst->_v, object_src->_v)
3096 float par_imat[4][4];
3113 float vec[4], quat[4], radius, ctime;
3144 CLAMP(ctime, 0.0f, 1.0f);
3151 par, ctime, vec,
nullptr, (cu->
flag &
CU_FOLLOW) ? quat :
nullptr, &radius,
nullptr)) {
3158 float tmat[4][4], rmat[4][4];
3180 if (!pchan || !pchan->
bone) {
3182 &
LOG,
"Parent Bone: '%s' for Object: '%s' doesn't exist", ob->
parsubstr, ob->
id.
name + 2);
3215 int numVerts = me_eval->totvert;
3218 numVerts = em->bm->totvert;
3219 if (em->bm->elem_table_dirty &
BM_VERT) {
3220 #ifdef VPARENT_THREADING_HACK
3222 if (em->bm->elem_table_dirty &
BM_VERT) {
3231 if (nr < numVerts) {
3232 if (me_eval && me_eval->runtime.edit_data && me_eval->runtime.edit_data->vertexCos) {
3233 add_v3_v3(vec, me_eval->runtime.edit_data->vertexCos[nr]);
3245 for (
int i = 0; i < numVerts; i++) {
3246 if (index[i] == nr) {
3253 if (nr < numVerts) {
3262 else if (
count > 0) {
3267 if (me_eval->totvert) {
3274 "Evaluated mesh is needed to solve parenting, "
3275 "object position can be wrong now");
3298 float(*co)[3] = dl ? (
float(*)[3])dl->verts :
nullptr;
3325 float cmat[3][3],
v1[3],
v2[3], v3[3], q[4];
3398 Object *ob,
Object *par,
const bool set_origin,
float r_obmat[4][4],
float r_originmat[3][3])
3433 float r_originmat[3][3])
3533 const float mat[4][4],
3535 const float parentinv[4][4],
3536 const bool use_compat)
3542 if (parent !=
nullptr) {
3543 float rmat[4][4], diff_mat[4][4], imat[4][4], parent_mat[4][4];
3562 if (ob->
dscale[0] != 0.0f) {
3565 if (ob->
dscale[1] != 0.0f) {
3568 if (ob->
dscale[2] != 0.0f) {
3576 const float mat[4][4],
3577 const bool use_compat,
3578 const bool use_parent)
3606 float par_locrot[4][4], par_imat[4][4];
3622 float ob_local[4][4];
3640 BoundBox *bb = MEM_cnew<BoundBox>(__func__);
3647 bb->
vec[0][0] = bb->
vec[1][0] = bb->
vec[2][0] = bb->
vec[3][0] =
min[0];
3648 bb->
vec[4][0] = bb->
vec[5][0] = bb->
vec[6][0] = bb->
vec[7][0] =
max[0];
3650 bb->
vec[0][1] = bb->
vec[1][1] = bb->
vec[4][1] = bb->
vec[5][1] =
min[1];
3651 bb->
vec[2][1] = bb->
vec[3][1] = bb->
vec[6][1] = bb->
vec[7][1] =
max[1];
3653 bb->
vec[0][2] = bb->
vec[3][2] = bb->
vec[4][2] = bb->
vec[7][2] =
min[2];
3654 bb->
vec[1][2] = bb->
vec[2][2] = bb->
vec[5][2] = bb->
vec[6][2] =
max[2];
3659 r_cent[0] = 0.5f * (bb->
vec[0][0] + bb->
vec[4][0]);
3660 r_cent[1] = 0.5f * (bb->
vec[0][1] + bb->
vec[2][1]);
3661 r_cent[2] = 0.5f * (bb->
vec[0][2] + bb->
vec[1][2]);
3666 r_size[0] = 0.5f *
fabsf(bb->
vec[0][0] - bb->
vec[4][0]);
3667 r_size[1] = 0.5f *
fabsf(bb->
vec[0][1] - bb->
vec[2][1]);
3668 r_size[2] = 0.5f *
fabsf(bb->
vec[0][2] - bb->
vec[1][2]);
3672 const float obmat[4][4],
3677 for (i = 0; i < 8; i++) {
3735 ob->
runtime.
bb = MEM_cnew<BoundBox>(
"DM-BoundBox");
3768 ob->
runtime.
bb = MEM_cnew<BoundBox>(__func__);
3793 r_vec[0] =
fabsf(scale[0]) * (bb->
vec[4][0] - bb->
vec[0][0]);
3794 r_vec[1] =
fabsf(scale[1]) * (bb->
vec[2][1] - bb->
vec[0][1]);
3795 r_vec[2] =
fabsf(scale[2]) * (bb->
vec[1][2] - bb->
vec[0][2]);
3803 const float value[3],
3805 const float ob_scale_orig[3],
3806 const float ob_obmat_orig[4][4])
3815 for (
int i = 0; i < 3; i++) {
3816 if (((1 << i) & axis_mask) == 0) {
3818 if (ob_scale_orig !=
nullptr) {
3819 const float scale_delta =
len_v3(ob_obmat_orig[i]) / ob_scale_orig[i];
3821 len[i] *= scale_delta;
3827 ob->
scale[i] = scale;
3841 bool changed =
false;
3871 for (u = 0; u < lt->
pntsu; u++, bp++) {
3886 float ob_min[3], ob_max[3];
3916 if (changed ==
false) {
3943 ob->
iuser = MEM_cnew<ImageUser>(
"image user");
4003 if (proj_length_sq > 1e-5f) {
4034 max[0] =
max[2] = radius;
4035 min[0] =
min[2] = -radius;
4046 max =
float3(radius, radius * 2.0f, radius);
4051 const float *ofs = ob->
ima_ofs;
4053 min[0] = ofs[0] * radius;
4054 min[1] = ofs[1] * radius;
4055 max[0] = radius + (ofs[0] * radius);
4056 max[1] = radius + (ofs[1] * radius);
4059 for (
int i = 0; i < 2; i++) {
4080 const bool use_hidden)
4089 if (((use_hidden ==
false) && (dob->no_draw != 0)) || dob->ob_data ==
nullptr) {
4093 Object temp_ob = blender::dna::shallow_copy(*dob->ob);
4101 for (i = 0; i < 8; i++) {
4134 for (i = 0, pt = stroke->
points; i < stroke->totpoints; i++, pt++) {
4143 const float obmat[4][4],
4144 void (*func_cb)(
const float[3],
void *),
4151 if (mesh_eval !=
nullptr) {
4153 const int totvert = mesh_eval->
totvert;
4154 for (
int i = 0; i < totvert; i++,
mv++) {
4161 iter_data.
obmat = obmat;
4162 iter_data.point_func_cb = func_cb;
4170 const float *v3 = dl->verts;
4171 int totvert = dl->nr;
4174 for (i = 0; i < totvert; i++, v3 += 3) {
4183 void (*func_cb)(
const float[3],
void *),
4239 return (
void *)obtfm;
4274 const ID *object_data = (
ID *)ob->
data;
4276 const bool recalc_data = (object_data !=
nullptr) ?
4279 if (!recalc_object && !recalc_data) {
4283 if (ob->
pose !=
nullptr) {
4304 if (recalc_object || recalc_data) {
4306 printf(
"recalcob %s\n", ob->
id.
name + 2);
4324 ob->
sculpt = MEM_cnew<SculptSession>(__func__);
4331 if (ob->
data ==
nullptr) {
4335 switch (
GS(((
ID *)ob->
data)->name)) {
4377 GeometrySet *geometry_set_eval =
object->runtime.geometry_set_eval;
4378 if (geometry_set_eval) {
4392 ID *data_eval =
object->
runtime.data_eval;
4394 return reinterpret_cast<Mesh *
>(data_eval);
4426 return (
Mesh *)
object->data;
4451 const Mesh *
mesh =
static_cast<const Mesh *
>(
object->data);
4458 return reinterpret_cast<Mesh *
>(
object->runtime.data_eval);
4466 const Mesh *
mesh =
static_cast<const Mesh *
>(
object->data);
4470 return object->runtime.editmesh_eval_cage;
4490 ID *data_eval =
object->
runtime.data_eval;
4492 if (data_eval ==
nullptr ||
GS(data_eval->
name) !=
ID_LT) {
4539 link = MEM_cnew<LinkData>(
"PCLink");
4550 if (listbase ==
nullptr) {
4588 if (key ==
nullptr) {
4594 if (newkey || from_mix ==
false) {
4607 kb->totelem = totelem;
4620 if (key ==
nullptr) {
4626 if (newkey || from_mix ==
false) {
4631 kb->totelem = basekb->
totelem;
4644 kb->totelem = totelem;
4659 if (key ==
nullptr) {
4665 if (newkey || from_mix ==
false) {
4671 kb->totelem = basekb->
totelem;
4684 kb->totelem = totelem;
4700 const bool from_mix)
4720 if (key !=
nullptr) {
4734 if (
ELEM(
nullptr, key_p, *key_p)) {
4751 if (key ==
nullptr) {
4759 if (rkb->relative == kb_index) {
4763 else if (rkb->relative >= kb_index) {
4823 if (par ==
nullptr) {
4834 if (ob->
flag & flag) {
4846 for (ob_child = ob_child->
parent; ob_child; ob_child = ob_child->
parent) {
4847 if (ob_child == ob_parent) {
4896 if (recurse_parent && object->
parent !=
nullptr) {
4964 if (ob->
adt !=
nullptr) {
4966 if (adt->
action !=
nullptr) {
4968 if (fcu->rna_path && strstr(fcu->rna_path,
"modifiers[")) {
4974 if (fcu->rna_path && strstr(fcu->rna_path,
"modifiers[")) {
5060 clip = solver->
clip;
5129 Object *ob_arm =
nullptr;
5172 Object *ob = base->object;
5178 Object *ob = base->object;
5208 Object *child = local_base->object;
5236 LinkNode *collection_linknode =
nullptr;
5242 return collection_linknode;
5262 KDTree_3d *
tree =
nullptr;
5263 unsigned int tot = 0;
5275 MVert *mvert = me_eval->mvert;
5276 uint totvert = me_eval->totvert;
5280 tree = BLI_kdtree_3d_new(totvert);
5283 for (i = 0; i < totvert; i++) {
5287 BLI_kdtree_3d_insert(
tree, index[i], co);
5296 tree = BLI_kdtree_3d_new(tot);
5298 for (i = 0; i < tot; i++) {
5301 BLI_kdtree_3d_insert(
tree, i, co);
5305 BLI_kdtree_3d_balance(
tree);
5317 tree = BLI_kdtree_3d_new(tot);
5330 BLI_kdtree_3d_insert(
tree, i++, co);
5338 a = nu->pntsu * nu->pntsv;
5342 BLI_kdtree_3d_insert(
tree, i++, co);
5349 BLI_kdtree_3d_balance(
tree);
5359 tree = BLI_kdtree_3d_new(tot);
5362 for (bp = lt->
def; i < tot; bp++) {
5365 BLI_kdtree_3d_insert(
tree, i++, co);
5368 BLI_kdtree_3d_balance(
tree);
5409 int parent_recursion,
5420 if (pmd && pmd->
canvas) {
5433 if (parent_recursion) {
5434 int recursion = parent_recursion - 1;
5435 bool no_update =
false;
5453 ListBase targets = {
nullptr,
nullptr};
5525 object->runtime.object_as_temp_mesh =
mesh;
5535 object->runtime.object_as_temp_mesh =
nullptr;
5543 object->runtime.object_as_temp_curve =
curve;
5553 object->runtime.object_as_temp_curve =
nullptr;
5593 ob->
data = (
void *)new_data;
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_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_channels_hash_ensure(struct bPose *pose)
void BKE_pose_copy_data_ex(struct bPose **dst, const struct bPose *src, int flag, bool copy_constraints)
void BKE_pose_update_constraint_flags(struct bPose *pose)
void BKE_pose_blend_read_lib(struct BlendLibReader *reader, struct Object *ob, struct bPose *pose)
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_blend_write(struct BlendWriter *writer, struct AnimData *adt)
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, 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)
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)
void BKE_pose_rebuild(struct Main *bmain, struct Object *ob, struct bArmature *arm, bool do_id_user)
void BKE_asset_metadata_idprop_ensure(struct AssetMetaData *asset_data, struct IDProperty *prop)
bool BKE_bpath_foreach_path_fixed_process(struct BPathForeachPathData *bpath_data, char *path)
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_viewlayer_object_add(struct Main *bmain, const struct ViewLayer *view_layer, 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, 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_targets_flush(struct bConstraint *con, struct ListBase *targets, bool no_copy)
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)
int BKE_constraint_targets_get(struct bConstraint *con, struct ListBase *r_targets)
struct bConstraintOb * BKE_constraints_make_evalob(struct Depsgraph *depsgraph, struct Scene *scene, struct Object *ob, void *subdata, short datatype)
void BKE_constraint_blend_read_lib(struct BlendLibReader *reader, struct ID *id, struct ListBase *conlist)
void BKE_constraints_copy_ex(struct ListBase *dst, const struct ListBase *src, int flag, bool do_extern)
void BKE_constraints_clear_evalob(struct bConstraintOb *cob)
void BKE_crazyspace_api_eval_clear(struct Object *object)
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, 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 * BKE_curves_add(struct Main *bmain, const char *name)
struct BoundBox * BKE_curves_boundbox_get(struct Object *ob)
Low-level operations for curves.
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)
void BKE_displist_minmax(const struct ListBase *dispbase, float min[3], float max[3])
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_geometry_set_free(struct GeometrySet *geometry_set)
bool BKE_object_has_geometry_set_instances(const struct Object *ob)
void BKE_gpencil_eval_delete(struct bGPdata *gpd_eval)
void BKE_gpencil_visible_stroke_iter(struct bGPdata *gpd, gpIterCb layer_cb, gpIterCb stroke_cb, void *thunk)
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, int flag)
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)
void BKE_gpencil_modifier_free_ex(struct GpencilModifierData *md, int flag)
const GpencilModifierTypeInfo * BKE_gpencil_modifier_get_info(GpencilModifierType type)
struct GpencilModifierData * BKE_gpencil_modifier_new(int type)
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, int type_filter, IDPForeachPropertyCallback callback, void *user_data)
struct IDProperty * IDP_New(char type, const IDPropertyTemplate *val, const char *name) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL()
void BKE_keyblock_convert_to_curve(struct KeyBlock *kb, struct Curve *cu, struct ListBase *nurb)
void BKE_keyblock_convert_from_curve(const struct Curve *cu, struct KeyBlock *kb, const struct ListBase *nurb)
float * BKE_key_evaluate_object(struct Object *ob, int *r_totelem)
void BKE_keyblock_convert_from_mesh(const struct Mesh *me, const struct Key *key, struct KeyBlock *kb)
struct Key ** BKE_key_from_object_p(struct Object *ob)
void BKE_keyblock_convert_to_lattice(const struct KeyBlock *kb, struct Lattice *lt)
void BKE_keyblock_convert_to_mesh(const struct KeyBlock *kb, struct MVert *mvert, int totvert)
struct Key * BKE_key_from_object(struct Object *ob)
struct KeyBlock * BKE_keyblock_add_ctime(struct Key *key, const char *name, bool do_force)
struct Key * BKE_key_add(struct Main *bmain, struct ID *id)
void BKE_keyblock_convert_from_lattice(const struct Lattice *lt, struct KeyBlock *kb)
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)
struct Base ** BKE_view_layer_array_from_bases_in_mode_params(struct ViewLayer *view_layer, const struct View3D *v3d, uint *r_len, const struct ObjectsInModeParams *params)
void BKE_view_layer_base_select_and_set_active(struct ViewLayer *view_layer, struct Base *selbase)
struct Object ** BKE_view_layer_array_from_objects_in_mode_params(struct ViewLayer *view_layer, const struct View3D *v3d, uint *len, const struct ObjectsInModeParams *params)
@ LIB_ID_COPY_SET_COPIED_ON_WRITE
@ LIB_ID_CREATE_NO_USER_REFCOUNT
@ LIB_ID_COPY_RIGID_BODY_NO_COLLECTION_HANDLING
void BKE_main_id_newptr_and_tag_clear(struct Main *bmain)
void BKE_libblock_free_data(struct ID *id, bool do_id_user) ATTR_NONNULL()
void id_us_min(struct ID *id)
void * BKE_libblock_alloc(struct Main *bmain, short type, const char *name, int flag) ATTR_WARN_UNUSED_RESULT
void BKE_id_free(struct Main *bmain, void *idv)
void BKE_libblock_free_datablock(struct ID *id, int flag) ATTR_NONNULL()
void id_us_plus(struct ID *id)
void BKE_id_blend_write(struct BlendWriter *writer, struct ID *id)
void id_us_plus_no_lib(struct ID *id)
struct ID * BKE_id_copy_for_duplicate(struct Main *bmain, struct ID *id, uint duplicate_flags, int copy_flags)
@ LIB_ID_DUPLICATE_IS_ROOT_ID
@ LIB_ID_DUPLICATE_IS_SUBPROCESS
void BKE_id_free_us(struct Main *bmain, void *idv) ATTR_NONNULL()
void BKE_lib_query_foreachid_process(struct LibraryForeachIDData *data, struct ID **id_pp, int cb_flag)
#define BKE_LIB_FOREACHID_PROCESS_IDSUPER(_data, _id_super, _cb_flag)
#define BKE_LIB_FOREACHID_PROCESS_FUNCTION_CALL(_data, _func_call)
void BKE_lib_query_idpropertiesForeachIDLink_callback(struct IDProperty *id_prop, void *user_data)
#define BKE_LIB_FOREACHID_PROCESS_ID(_data, _id, _cb_flag)
void BKE_libblock_relink_to_newid(struct Main *bmain, struct ID *id, int remap_flag) ATTR_NONNULL()
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_materials_test(struct Main *bmain, struct Object *ob, struct ID *id)
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], short flag)
struct BoundBox * BKE_mball_boundbox_get(struct Object *ob)
struct BoundBox * BKE_mesh_boundbox_get(struct Object *ob)
void BKE_mesh_texspace_get_reference(struct Mesh *me, char **r_texflag, float **r_loc, float **r_size)
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)
struct Mesh * BKE_mesh_new_from_object(struct Depsgraph *depsgraph, struct Object *object, bool preserve_all_data_layers, bool preserve_origindex)
bool BKE_mesh_wrapper_minmax(const struct Mesh *me, float min[3], float max[3])
struct Mesh * BKE_mesh_wrapper_ensure_subdivision(struct Mesh *me)
void BKE_modifier_copydata_ex(const struct ModifierData *md, struct ModifierData *target, int flag)
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)
@ eModifierTypeFlag_Single
@ eModifierTypeFlag_AcceptsCVs
@ eModifierTypeFlag_AcceptsVertexCosOnly
@ eModifierTypeFlag_AcceptsMesh
struct ModifierData * BKE_modifiers_get_virtual_modifierlist(const struct Object *ob, struct VirtualModifierData *data)
void BKE_modifier_free_ex(struct ModifierData *md, int flag)
void BKE_modifier_copydata(const struct ModifierData *md, struct ModifierData *target)
void BKE_modifier_blend_write(struct BlendWriter *writer, const struct ID *id_owner, struct ListBase *modbase)
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_read_data(struct BlendDataReader *reader, struct ListBase *lb, struct Object *ob)
struct ModifierData * BKE_modifier_copy_ex(const struct ModifierData *md, int flag)
bool BKE_modifier_unique_name(struct ListBase *modifiers, struct ModifierData *md)
bool multiresModifier_reshapeFromCCG(int tot_level, struct Mesh *coarse_mesh, struct SubdivCCG *subdiv_ccg)
void multiresModifier_sync_levels_ex(struct Object *ob_dst, struct MultiresModifierData *mmd_src, struct MultiresModifierData *mmd_dst)
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)
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, 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_free_constraint(struct Object *ob)
void BKE_rigidbody_free_object(struct Object *ob, struct RigidBodyWorld *rbw)
void BKE_rigidbody_object_copy(struct Main *bmain, struct Object *ob_dst, const struct Object *ob_src, int flag)
void BKE_rigidbody_sync_transforms(struct RigidBodyWorld *rbw, struct Object *ob, float ctime)
void BKE_shaderfx_foreach_ID_link(struct Object *ob, ShaderFxIDWalkFunc walk, void *userData)
void BKE_shaderfx_free_ex(struct ShaderFxData *fx, int flag)
void BKE_shaderfx_blend_write(struct BlendWriter *writer, struct ListBase *fxbase)
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, 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()
#define BLI_assert_msg(a, msg)
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 orthogonalize_m4_stable(float R[4][4], int axis, bool normalize)
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_m4_m4_post(float R[4][4], const float B[4][4])
void eulO_to_mat3(float mat[3][3], const float eul[3], short order)
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 axis_angle_to_quat(float r[4], const float axis[3], float angle)
float normalize_qt(float q[4])
float normalize_qt_qt(float r[4], const float q[4])
void quat_to_compatible_eulO(float eul[3], const float old[3], short order, const float quat[4])
void quat_to_eulO(float eul[3], short order, const float quat[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_quat(float quat[4], const float eul[3], short order)
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 axis_angle_to_mat3(float R[3][3], const float axis[3], float angle)
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])
MINLINE bool is_zero_v3(const float a[3]) ATTR_WARN_UNUSED_RESULT
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 float normalize_v3_v3(float r[3], const float a[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
char * BLI_strncpy(char *__restrict dst, const char *__restrict src, 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 POINTER_FROM_INT(i)
#define UNUSED_VARS_NDEBUG(...)
#define POINTER_AS_INT(i)
#define MEMCMP_STRUCT_AFTER_IS_ZERO(struct_var, member)
#define MEMCPY_STRUCT_AFTER(struct_dst, struct_src, member)
#define BLO_read_data_address(reader, ptr_p)
struct Main * BLO_read_lib_get_main(BlendLibReader *reader)
ID * BLO_read_get_new_id_address(BlendLibReader *reader, struct Library *lib, struct ID *id)
struct BlendFileReadReport * BLO_read_lib_reports(BlendLibReader *reader)
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)
void BLO_reportf_wrap(struct BlendFileReadReport *reports, eReportType type, const char *format,...) ATTR_PRINTF_FORMAT(3
bool BLO_write_is_undo(BlendWriter *writer)
void BLO_write_pointer_array(BlendWriter *writer, uint num, const void *data_ptr)
external readfile function prototypes.
#define BLT_I18NCONTEXT_ID_LIGHT
#define BLT_I18NCONTEXT_ID_OBJECT
#define CTX_DATA_(context, msgid)
#define CLOG_ERROR(clg_ref,...)
#define CLOG_WARN(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)
bool DEG_is_original_id(const struct ID *id)
#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
#define ID_IS_LINKED(_id)
@ LIB_TAG_COPIED_ON_WRITE_EVAL_RESULT
@ LIB_TAG_COPIED_ON_WRITE
@ 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
@ eModifierType_MeshCache
#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)
@ 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 OB_TYPE_SUPPORT_VGROUP(_type)
#define PSYS_SHARED_CACHES
@ PTCACHE_FLAG_INFO_DIRTY
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.
Group Output data from inside of a node group A color picker Mix two input colors RGB to Convert a color s luminance to a grayscale value Generate a normal vector and a dot product Bright Control the brightness and contrast of the input color Vector Map an input vectors to used to fine tune the interpolation of the input Camera Retrieve information about the camera and how it relates to the current shading point s position 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)
return(oflags[bm->toolflag_index].f &oflag) !=0
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
SyclQueue void void size_t num_bytes void
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)
T dot(const vec_base< T, Size > &a, const vec_base< T, Size > &b)
vec_base< float, 3 > float3
static const pxr::TfToken b("b", pxr::TfToken::Immortal)
Mesh * BKE_object_get_editmesh_eval_final(const Object *object)
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)
bool BKE_object_obdata_texspace_get(Object *ob, char **r_texflag, float **r_loc, float **r_size)
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)
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)
void BKE_object_minmax(Object *ob, float r_min[3], float r_max[3], const bool use_hidden)
static KeyBlock * insert_curvekey(Main *bmain, Object *ob, const char *name, const bool from_mix)
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)
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)
void BKE_object_handle_update_ex(Depsgraph *depsgraph, Scene *scene, Object *ob, RigidBodyWorld *rbw)
static void foreach_display_point_gpencil_stroke_fn(bGPDlayer *UNUSED(layer), bGPDframe *UNUSED(frame), bGPDstroke *stroke, void *thunk)
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 bool object_modifier_type_copy_check(ModifierType md_type)
static void object_init(Object *ob, const short ob_type)
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)
void BKE_object_replace_data_on_shallow_copy(Object *ob, ID *new_data)
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)
static void object_lib_override_apply_post(ID *id_dst, ID *id_src)
static void object_asset_pre_save(void *asset_ptr, struct AssetMetaData *asset_data)
static void object_foreach_path(ID *id, BPathForeachPathData *bpath_data)
static AssetTypeInfo AssetType_OB
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)
Object * BKE_object_duplicate(Main *bmain, Object *ob, uint dupflag, uint duplicate_options)
bool BKE_object_supports_material_slots(struct Object *ob)
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])
static void object_update_from_subsurf_ccg(Object *object)
Object * BKE_object_pose_armature_get_with_wpaint_check(Object *ob)
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)
static int pc_cmp(const void *a, const void *b)
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)
void BKE_object_boundbox_calc_from_mesh(Object *ob, const Mesh *me_eval)
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)
const BoundBox * BKE_object_boundbox_get(Object *ob)
bool BKE_object_moves_in_time(const Object *object, bool recurse_parent)
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)
void BKE_object_apply_parent_inverse(struct Object *ob)
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)
static IDProperty * object_asset_dimensions_property(Object *ob)
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])
bool BKE_object_minmax_empty_drawtype(const struct Object *ob, float r_min[3], float r_max[3])
void BKE_object_runtime_free_data(Object *object)
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_boundbox_calc_from_evaluated_geometry(Object *ob)
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 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])
bool BKE_object_data_is_in_editmode(const Object *ob, const ID *id)
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)
SubsurfModifierData * BKE_object_get_last_subsurf_modifier(const Object *ob)
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)
Mesh * BKE_object_get_evaluated_mesh_no_subsurf(const Object *object)
bool BKE_object_is_child_recursive(const Object *ob_parent, const Object *ob_child)
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])
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)
Mesh * BKE_object_get_original_mesh(const Object *object)
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)
BoundBox * BKE_boundbox_alloc_unit()
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)
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)
Mesh * BKE_object_get_evaluated_mesh(const Object *object)
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)
Mesh * BKE_object_get_editmesh_eval_cage(const Object *object)
static bool obrel_list_test(Object *ob)
Mesh * BKE_object_get_pre_modified_mesh(const Object *object)
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 void object_foreach_path_pointcache(ListBase *ptcache_list, BPathForeachPathData *bpath_data)
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)
struct Object * start_cap
struct Object * offset_ob
struct BlendFileReadReport::@134 count
struct PointCache * point_cache
const float * anim_path_accum_length
struct ParticleSystem * psys
struct DynamicPaintCanvasSettings * canvas
struct DynamicPaintBrushSettings * brush
struct Collection * group
char cache_directory[1024]
struct ParticleSystem * psys
struct FluidDomainSettings * domain
struct FluidEffectorSettings * effector
struct FluidFlowSettings * flow
struct FluidsimSettings * fss
void(* point_func_cb)(const float co[3], void *user_data)
const Mesh * get_mesh_for_read() const
bool compute_boundbox_without_instances(blender::float3 *r_min, blender::float3 *r_max) const
void(* copyData)(const struct GpencilModifierData *md, struct GpencilModifierData *target)
struct ID_Runtime runtime
struct EditLatt * editlatt
struct Collection * collection
struct SubdivCCG * subdiv_ccg
struct BMEditMesh * edit_mesh
struct Object * mirror_ob
struct ModifierData * next
struct ModifierData * prev
void(* modifyGeometrySet)(struct ModifierData *md, const struct ModifierEvalContext *ctx, struct GeometrySet *geometry_set)
struct BoundBox * editmesh_bb_cage
struct CurveCache * curve_cache
float(* crazyspace_deform_imats)[3][3]
float parent_display_origin[3]
struct Mesh * editmesh_eval_cage
struct Mesh * mesh_deform_eval
float(* crazyspace_deform_cos)[3]
struct bGPdata * gpd_eval
struct Curve * object_as_temp_curve
struct GeometrySet * geometry_set_eval
struct Mesh * object_as_temp_mesh
struct Collection * instance_collection
struct RigidBodyOb * rigidbody_object
ListBase greasepencil_modifiers
struct PreviewImage * preview
struct DrawDataList drawdata
char duplicator_visibility_flag
struct SculptSession * sculpt
struct RigidBodyCon * rigidbody_constraint
struct LightgroupMembership * lightgroup
char empty_image_visibility_flag
struct ListBase * ptcaches
unsigned int default_step
struct Collection * group
struct ParticleSystem * psys
struct Mesh * mesh_original
struct PTCacheEdit * edit
struct ListBase * effectors
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::@69 dirty
struct bConstraint * next
struct IDPropertyTemplate::@27 array
ccl_device_inline int mod(int x, int m)