139 {
LA_LOCAL,
"POINT", ICON_LIGHT_POINT,
"Point",
"Omnidirectional point light source"},
140 {
LA_SUN,
"SUN", ICON_LIGHT_SUN,
"Sun",
"Constant direction parallel ray light source"},
141 {
LA_SPOT,
"SPOT", ICON_LIGHT_SPOT,
"Spot",
"Directional cone light source"},
142 {
LA_AREA,
"AREA", ICON_LIGHT_AREA,
"Area",
"Directional area light source"},
143 {0,
nullptr, 0,
nullptr,
nullptr},
159 {
PFIELD_WIND,
"WIND", ICON_FORCE_WIND,
"Wind",
""},
161 {
PFIELD_MAGNET,
"MAGNET", ICON_FORCE_MAGNETIC,
"Magnetic",
""},
164 {
PFIELD_LENNARDJ,
"LENNARDJ", ICON_FORCE_LENNARDJONES,
"Lennard-Jones",
""},
166 {
PFIELD_GUIDE,
"GUIDE", ICON_FORCE_CURVE,
"Curve Guide",
""},
167 {
PFIELD_BOID,
"BOID", ICON_FORCE_BOID,
"Boid",
""},
169 {
PFIELD_DRAG,
"DRAG", ICON_FORCE_DRAG,
"Drag",
""},
171 {0,
nullptr, 0,
nullptr,
nullptr},
177 ICON_LIGHTPROBE_SPHERE,
179 "Light probe that captures precise lighting from all directions at a single point in space"},
182 ICON_LIGHTPROBE_PLANE,
184 "Light probe that captures incoming light from a single direction on a plane"},
187 ICON_LIGHTPROBE_VOLUME,
189 "Light probe that captures low frequency lighting inside a volume"},
190 {0,
nullptr, 0,
nullptr,
nullptr},
200 {
ALIGN_WORLD,
"WORLD", 0,
"World",
"Align the new object to the world"},
201 {
ALIGN_VIEW,
"VIEW", 0,
"View",
"Align the new object to the view"},
202 {
ALIGN_CURSOR,
"CURSOR", 0,
"3D Cursor",
"Use the 3D cursor orientation for the new object"},
203 {0,
nullptr, 0,
nullptr,
nullptr},
226 "X-coordinate (screen space) to place the new object under",
236 "Y-coordinate (screen space) to place the new object under",
261 (*r_mval)[0] =
RNA_int_get(op->
ptr,
"drop_x") - region->winrct.xmin;
262 (*r_mval)[1] =
RNA_int_get(op->
ptr,
"drop_y") - region->winrct.ymin;
294 BLI_assert(align_axis >=
'X' && align_axis <=
'Z');
296 switch (align_axis) {
299 const float axis_y[4] = {0.0f, 1.0f, 0.0f};
300 float quat_y[4], quat[4];
321 BLI_assert(align_axis >=
'X' && align_axis <=
'Z');
325 viewquat[0] *= -1.0f;
350 const float scale[3],
351 float r_primmat[4][4])
355 float mat[3][3], rmat[3][3], cmat[3][3], imat[3][3];
363 copy_m3_m4(mat, obedit->object_to_world().ptr());
370 sub_v3_v3v3(r_primmat[3], r_primmat[3], obedit->object_to_world().location());
374 if (scale !=
nullptr) {
424 "Enter edit mode when adding this object");
439 "Location for the newly added object",
450 "Rotation for the newly added object",
462 "Scale for the newly added object",
475 const char view_align_axis,
479 bool *r_enter_editmode,
480 ushort *r_local_view_bits,
481 bool *r_is_view_aligned)
485 bool _enter_editmode;
486 if (!r_enter_editmode) {
487 r_enter_editmode = &_enter_editmode;
491 *r_enter_editmode =
false;
494 if (prop !=
nullptr) {
505 if (r_local_view_bits) {
528 bool _is_view_aligned;
530 if (!r_is_view_aligned) {
531 r_is_view_aligned = &_is_view_aligned;
541 *r_is_view_aligned =
false;
556 if (*r_is_view_aligned) {
599 if (prop !=
nullptr) {
616 const bool enter_editmode,
617 const ushort local_view_bits,
627 if (obedit !=
nullptr) {
634 if (obdata !=
nullptr) {
638 if (materials_len_p && *materials_len_p > 0) {
651 if (ob_base_act !=
nullptr) {
665 if (ob->
data !=
nullptr) {
669 if (enter_editmode) {
687 const bool enter_editmode,
688 const ushort local_view_bits)
698 float loc[3],
rot[3], radius;
704 C,
RNA_enum_get(op->
ptr,
"type"),
nullptr, loc,
rot, enter_editmode, local_view_bits);
765 float loc[3],
rot[3];
786 ot->
name =
"Add Light Probe";
788 ot->
idname =
"OBJECT_OT_lightprobe_add";
855 float loc[3],
rot[3];
878 if (!enter_editmode) {
898 ot->
name =
"Add Effector";
899 ot->
description =
"Add an empty object with a physics effector to the scene";
900 ot->
idname =
"OBJECT_OT_effector_add";
932 float loc[3],
rot[3];
938 if (v3d->
camera ==
nullptr) {
941 if (v3d->
scenelock && scene->camera ==
nullptr) {
960 ot->
idname =
"OBJECT_OT_camera_add";
990 float loc[3],
rot[3];
1015 if (newob && !enter_editmode) {
1029 ot->
name =
"Add Metaball";
1031 ot->
idname =
"OBJECT_OT_metaball_add";
1056 bool enter_editmode;
1058 float loc[3],
rot[3];
1108 bool enter_editmode;
1110 float loc[3],
rot[3], dia;
1125 if (obedit ==
nullptr) {
1139 if (newob && !enter_editmode) {
1149 ot->
name =
"Add Armature";
1151 ot->
idname =
"OBJECT_OT_armature_add";
1176 float loc[3],
rot[3];
1194 ot->
idname =
"OBJECT_OT_empty_add";
1213 Image *ima =
nullptr;
1222 float loc[3],
rot[3];
1283 Image *ima =
nullptr;
1299 ob_cursor->
data = ima;
1312 ot->
name =
"Add Empty Image/Drop Image to Empty";
1313 ot->
description =
"Add an empty image type to scene with data";
1314 ot->
idname =
"OBJECT_OT_empty_image_add";
1339 "Put in Background",
1340 "Make the image render behind all objects");
1360 "Display strokes using grease pencil layers to define order"},
1361 {
GP_DRAWMODE_3D,
"3D", 0,
"3D Location",
"Display strokes using real 3D position in 3D space"},
1362 {0,
nullptr, 0,
nullptr,
nullptr},
1374 float loc[3],
rot[3];
1380 const char *ob_name =
nullptr;
1414 const float3 scale(radius);
1424 const float3 scale(radius);
1438 const int stroke_depth_order =
RNA_enum_get(op->
ptr,
"stroke_depth_order");
1439 const float stroke_depth_offset =
RNA_float_get(op->
ptr,
"stroke_depth_offset");
1443 auto *grease_pencil =
reinterpret_cast<GreasePencil *
>(
object->data);
1458 md->source_object = original_active_object;
1465 STRNCPY(md->target_layer, grease_pencil->get_active_layer()->name().c_str());
1467 if (md->target_material) {
1475 object->dtx &= ~OB_USE_GPENCIL_LIGHTS;
1486 md->stroke_depth_offset = stroke_depth_offset;
1502 ot->
name =
"Add Grease Pencil";
1503 ot->
description =
"Add a Grease Pencil object to the scene";
1504 ot->
idname =
"OBJECT_OT_grease_pencil_add";
1519 "Show Line Art grease pencil in front of everything");
1521 "stroke_depth_offset",
1526 "Stroke offset for the Line Art modifier",
1530 ot->
srna,
"use_lights",
false,
"Use Lights",
"Use lights for this grease pencil object");
1533 "stroke_depth_order",
1536 "Stroke Depth Order",
1537 "Defines how the strokes are ordered in 3D space (for objects not displayed 'In Front')");
1571 float loc[3],
rot[3];
1608 ot->
idname =
"OBJECT_OT_light_add";
1653 add_info.collection =
reinterpret_cast<Collection *
>(
1656 bool update_location_if_necessary =
false;
1657 if (add_info.collection) {
1658 update_location_if_necessary =
true;
1661 add_info.collection =
static_cast<Collection *
>(
1674 if (add_info.collection ==
nullptr) {
1675 return std::nullopt;
1685 &add_info.local_view_bits,
1708 add_info->collection->id.name + 2,
1712 add_info->local_view_bits);
1739 ot->
name =
"Add Collection Instance";
1741 ot->
idname =
"OBJECT_OT_collection_instance_add";
1753 ot->
srna,
"name",
"Collection",
MAX_ID_NAME - 2,
"Name",
"Collection name to add");
1802 add_info->collection->id.name + 2,
1806 add_info->local_view_bits);
1814 float delta_mat[4][4];
1817 const float scale[3] = {1.0f, 1.0f, 1.0f};
1823 negate_v3_v3(offset, add_info->collection->instance_offset);
1828 view_layer,
nullptr, &
params);
1841 ot->
name =
"Add Collection";
1842 ot->
description =
"Add the dragged collection to the scene";
1843 ot->
idname =
"OBJECT_OT_collection_external_asset_drop";
1864 "Add the dropped collection as collection instance");
1887 float loc[3],
rot[3];
1894 if (
id ==
nullptr) {
1898 if (object_type == -1) {
1921 ot->
name =
"Add Object Data Instance";
1923 ot->
idname =
"OBJECT_OT_data_instance_add";
1954 float loc[3],
rot[3];
1968 strip->
start = scene->r.cfra;
1987 ot->
name =
"Add Speaker";
1989 ot->
idname =
"OBJECT_OT_speaker_add";
2010 float loc[3],
rot[3];
2015 Curves *curves_id =
static_cast<Curves *
>(
object->data);
2024 ot->
name =
"Add Random Curves";
2025 ot->
description =
"Add a curves object with random curves to the scene";
2026 ot->
idname =
"OBJECT_OT_curves_random_add";
2043 add_generic_get_opts(C, op,
'Z',
nullptr,
nullptr,
nullptr,
nullptr, &local_view_bits,
nullptr);
2053 curves_id->
surface = surface_ob;
2059 Mesh *surface_mesh =
static_cast<Mesh *
>(surface_ob->
data);
2062 if (uv_name !=
nullptr) {
2091 ot->
name =
"Add Empty Curves";
2092 ot->
description =
"Add an empty curve object to the scene with the selected mesh as surface";
2093 ot->
idname =
"OBJECT_OT_curves_empty_hair_add";
2111 if (!
U.experimental.use_new_point_cloud_type) {
2120 float loc[3],
rot[3];
2132 ot->
name =
"Add Point Cloud";
2134 ot->
idname =
"OBJECT_OT_pointcloud_add";
2159 "WARNING, undeletable object '%s', should have been caught before reaching this "
2188 uint changed_count = 0;
2189 uint tagged_count = 0;
2202 "Cannot delete indirectly linked object '%s'",
2210 "Cannot delete object '%s' as it is used by override collections",
2220 "Cannot delete object '%s' from scene '%s', indirectly used objects need at "
2223 scene->id.name + 2);
2247 if (gpl->parent !=
nullptr) {
2248 if (gpl->parent == ob) {
2249 gpl->parent =
nullptr;
2258 if ((changed_count + tagged_count) == 0) {
2262 if (tagged_count > 0) {
2276 scene->id.tag &= ~ID_TAG_DOIT;
2294 IFACE_(
"Delete selected objects?"),
2320 ot->
srna,
"use_global",
false,
"Delete Globally",
"Remove object from all scenes");
2423 if (a->ob !=
b->ob) {
2427 if (a->type !=
b->type) {
2433 if (a->persistent_id[i] !=
b->persistent_id[i]) {
2436 if (a->persistent_id[i] == INT_MAX) {
2442 if (a->persistent_id[0] !=
b->persistent_id[0]) {
2458 if (a->persistent_id[i] !=
b->persistent_id[i]) {
2461 if (a->persistent_id[i] == INT_MAX) {
2474 const bool use_base_parent,
2475 const bool use_hierarchy)
2479 GHash *parent_gh =
nullptr, *instancer_gh =
nullptr;
2497 if (use_hierarchy) {
2500 if (use_base_parent) {
2514 if (ob_dst->
mat ==
nullptr) {
2530 ob_dst->
adt =
nullptr;
2532 ob_dst->
parent =
nullptr;
2534 ob_dst->
runtime->curve_cache =
nullptr;
2555 if (is_dupli_instancer && instancer_gh) {
2565 Object *ob_src = dob->ob;
2573 if (use_hierarchy) {
2576 Object *ob_dst_par =
nullptr;
2583 dob_key.
ob = ob_src_par;
2584 dob_key.
type = dob->type;
2587 &dob->persistent_id[1],
2606 ob_dst->
parent = ob_dst_par;
2609 if (use_base_parent && ob_dst->
parent ==
nullptr) {
2610 Object *ob_dst_par =
nullptr;
2612 if (instancer_gh !=
nullptr) {
2620 &dob->persistent_id[1],
2625 if (ob_dst_par ==
nullptr) {
2628 ob_dst_par = base->
object;
2631 ob_dst->
parent = ob_dst_par;
2698 ot->
name =
"Make Instances Real";
2699 ot->
description =
"Make instanced objects attached to this object real";
2700 ot->
idname =
"OBJECT_OT_duplicates_make_real";
2714 "Parent newly created objects to the original instancer");
2717 ot->
srna,
"use_hierarchy",
false,
"Keep Hierarchy",
"Maintain parent child relationships");
2729 ICON_OUTLINER_OB_CURVE,
2731 "Curve from Mesh or Text objects"},
2734 ICON_OUTLINER_OB_MESH,
2736#ifdef WITH_POINT_CLOUD
2737 "Mesh from Curve, Surface, Metaball, Text, or Point Cloud objects"},
2739 "Mesh from Curve, Surface, Metaball, or Text objects"},
2744 ICON_OUTLINER_OB_GREASEPENCIL,
2746 "Grease Pencil from Curve or Mesh objects"},
2748#ifdef WITH_POINT_CLOUD
2751 ICON_OUTLINER_OB_POINTCLOUD,
2753 "Point Cloud from Mesh objects"},
2755 {
OB_CURVES,
"CURVES", ICON_OUTLINER_OB_CURVES,
"Curves",
"Curves from evaluated curve data"},
2758 ICON_OUTLINER_OB_GREASEPENCIL,
2760 "Grease Pencil from Curve or Mesh objects"},
2761 {0,
nullptr, 0,
nullptr,
nullptr},
2779 if (
U.experimental.use_new_point_cloud_type) {
2797 if (mesh ==
nullptr) {
2814 if (other_object->data == curve) {
2818 other_object->data = ob->
data;
2844 if (ob ==
nullptr) {
2864 void *obdata = obn->
data;
2867 obn->
data =
nullptr;
2882 scene->customdata_mask = customdata_mask_prev;
2898 Base *basen =
nullptr, *basact =
nullptr;
2904 int mballConverted = 0;
2905 bool gpencilConverted =
false;
2906 bool gpencilCurveConverted =
false;
2912 ob->flag &= ~OB_DONE;
2925 ob_basis->
flag &= ~OB_DONE;
2954 keep_original =
true;
2957 "Converting some non-editable object/object data, enforcing 'Keep Original' "
2967 scene->customdata_mask = customdata_mask_prev;
2975 if (ob->
type != target) {
2976 base->
flag &= ~SELECT;
2977 ob->
flag &= ~SELECT;
2996 if (keep_original) {
3025 if (ob_eval->
runtime->geometry_set_eval !=
nullptr) {
3026 geometry = *ob_eval->
runtime->geometry_set_eval;
3029 if (geometry.has_curves()) {
3030 if (keep_original) {
3045 const Curves *curves_eval = geometry.get_curves();
3048 newob->
data = new_curves;
3057 else if (geometry.has_grease_pencil()) {
3058 if (keep_original) {
3074 newob->
data = new_curves;
3077 if (
const Curves *curves_eval = geometry.get_curves()) {
3078 new_curves->
geometry.wrap() = curves_eval->geometry.wrap();
3081 else if (
const GreasePencil *grease_pencil = geometry.get_grease_pencil()) {
3083 ed::greasepencil::retrieve_visible_drawings(*scene, *grease_pencil,
false);
3084 if (drawings.
size() > 0) {
3088 curves_id->
geometry.wrap() = drawings[i].drawing.strokes();
3089 geometries[i] = bke::GeometrySet::from_curves(curves_id);
3091 bke::GeometrySet joined_curves = geometry::join_geometries(geometries, {});
3094 new_curves->
geometry.wrap().tag_topology_changed();
3105 "Object '%s' has no evaluated grease pencil data",
3117 if (ob_eval->
runtime->geometry_set_eval !=
nullptr) {
3118 geometry = *ob_eval->
runtime->geometry_set_eval;
3121 if (geometry.has_curves()) {
3122 if (keep_original) {
3137 const Curves *curves_eval = geometry.get_curves();
3140 newob->
data = new_curves;
3149 else if (geometry.has_grease_pencil()) {
3150 if (keep_original) {
3168 newob->
data = new_curves;
3171 if (
const Curves *curves_eval = geometry.get_curves()) {
3172 new_curves->
geometry.wrap() = curves_eval->geometry.wrap();
3175 else if (
const GreasePencil *grease_pencil = geometry.get_grease_pencil()) {
3177 ed::greasepencil::retrieve_visible_drawings(*scene, *grease_pencil,
false);
3181 curves_id->
geometry.wrap() = drawings[i].drawing.strokes();
3182 const int layer_index = drawings[i].layer_index;
3190 geometries[i] = bke::GeometrySet::from_curves(curves_id);
3192 if (geometries.size() > 0) {
3193 bke::GeometrySet joined_curves = geometry::join_geometries(geometries, {});
3196 new_curves->
geometry.wrap().tag_topology_changed();
3202 newob->
data = new_mesh;
3205 Mesh *mesh = bke::curve_to_wire_mesh(new_curves->
geometry.wrap(), {});
3226 if (keep_original) {
3251 if (keep_original) {
3276 new_mesh->attributes_for_write().remove_anonymous();
3277 if (do_merge_customdata) {
3283 if (ob_data_mesh->
key) {
3295 ob_data_mesh->
key =
nullptr;
3302 if (!keep_original) {
3309 if (keep_original) {
3340 cu->
vfont =
nullptr;
3355 if (!keep_original) {
3361 if (ob1->
data == ob->
data && ob1 != ob) {
3389 if (keep_original) {
3413 base->
flag &= ~BASE_SELECTED;
3449 if (keep_original) {
3476 if (ob_eval->
runtime->geometry_set_eval !=
nullptr) {
3477 geometry = *ob_eval->
runtime->geometry_set_eval;
3480 if (keep_original) {
3494 newob->
data = new_mesh;
3497 if (
const Mesh *mesh_eval = geometry.get_mesh()) {
3500 new_mesh->attributes_for_write().remove_anonymous();
3502 else if (
const Curves *curves_eval = geometry.get_curves()) {
3503 Mesh *mesh = bke::curve_to_wire_mesh(curves_eval->geometry.wrap(),
3514 "Object '%s' has no evaluated mesh or curves data",
3526 if (ob_eval->
runtime->geometry_set_eval !=
nullptr) {
3527 geometry = *ob_eval->
runtime->geometry_set_eval;
3530 if (keep_original) {
3545 newob->
data = new_grease_pencil;
3548 if (
const GreasePencil *grease_pencil_eval = geometry.get_grease_pencil()) {
3552 new_grease_pencil->attributes_for_write().remove_anonymous();
3554 else if (
const Curves *curves_eval = geometry.get_curves()) {
3557 const std::string layer_name =
"Layer";
3558 const int frame_number = 1;
3570 "Object '%s' has no evaluated grease pencil or curves data",
3605 ((
ID *)ob->
data)->tag &= ~ID_TAG_DOIT;
3609 if (!keep_original) {
3610 if (mballConverted) {
3615 Object *ob_basis =
nullptr;
3626 if (ob_mball->flag &
OB_DONE) {
3636 if (gpencilConverted) {
3639 if (ob_delete->flag &
OB_DONE) {
3649 if (gpencilCurveConverted) {
3665 view_layer->
basact = basact;
3713 ot->
description =
"Convert selected objects to another type";
3734 "Keep original objects instead of replacing them");
3742 "Merge UV coordinates that share a vertex to account for imprecision in some modifiers");
3751 "Threshold to determine ends of the strokes",
3765 "Offset strokes from fill",
3840 Object *object_new =
nullptr;
3843 *r_ob_new = object_new;
3845 if (object_new ==
nullptr) {
3854 if (base_src && base_new) {
3875 if (basen ==
nullptr) {
3890 if (ob->
data !=
nullptr) {
3914 struct DuplicateObjectLink {
3915 Base *base_src =
nullptr;
3916 Object *object_new =
nullptr;
3918 DuplicateObjectLink(
Base *base_src) : base_src(base_src) {}
3923 object_base_links.
append(DuplicateObjectLink(base));
3927 bool new_objects_created =
false;
3928 for (DuplicateObjectLink &link : object_base_links) {
3930 link.base_src->object,
3934 if (link.object_new) {
3935 new_objects_created =
true;
3939 if (!new_objects_created) {
3944 for (DuplicateObjectLink &link : object_base_links) {
3948 if (link.object_new) {
3957 for (DuplicateObjectLink &link : object_base_links) {
3958 if (!link.object_new) {
3965 if (active_base == link.base_src) {
3969 if (link.object_new->data) {
3995 ot->
name =
"Duplicate Objects";
3997 ot->
idname =
"OBJECT_OT_duplicate";
4011 "Duplicate object but not object data, linking to the original data");
4040 if (ob ==
nullptr) {
4060 if (basen ==
nullptr) {
4090 op->
ptr, prop_matrix, ob_add->
runtime->object_to_world.base_ptr());
4111 ot->
idname =
"OBJECT_OT_add_named";
4126 "Duplicate object but not object data, linking to the original data");
4131 ot->
srna,
"matrix", 4, 4,
nullptr, 0.0f, 0.0f,
"Matrix",
"", 0.0f, 0.0f);
4160 if (ob ==
nullptr) {
4178 view_layer,
nullptr, &
params);
4183 float mat_src_unit[4][4];
4184 float mat_dst_unit[4][4];
4185 float final_delta[4][4];
4190 mul_m4_m4m4(final_delta, mat_dst_unit, mat_src_unit);
4219 ot->
name =
"Place Object Under Mouse";
4220 ot->
description =
"Snap selected item(s) to the mouse location";
4221 ot->
idname =
"OBJECT_OT_transform_to_mouse";
4238 "Object name to place (uses the active object when this and 'session_uid' are unset)");
4246 "Session UUID of the object to place (uses the active object when this and "
4247 "'name' are unset)",
4253 ot->
srna,
"matrix", 4, 4,
nullptr, 0.0f, 0.0f,
"Matrix",
"", 0.0f, 0.0f);
4304 "Cannot edit object '%s' as it is used by override collections",
4347 float imat_test[4][4];
4348 if (!
invert_m4_m4(imat_test, ob->object_to_world().ptr())) {
4351 "Active object final transform has one or more zero scaled axes");
4362 ot->
description =
"Join selected objects into active object";
4412 "Cannot edit object '%s' as it is used by override collections",
4427 ot->
name =
"Join as Shapes";
4428 ot->
description =
"Copy the current resulting shape of another selected object to this one";
4429 ot->
idname =
"OBJECT_OT_join_shapes";
C++ functions to deal with Armature collections (i.e. the successor of bone layers).
void ANIM_armature_bonecoll_active_set(bArmature *armature, BoneCollection *bcoll)
BoneCollection * ANIM_armature_bonecoll_new(bArmature *armature, const char *name, int parent_index=-1)
Blender kernel action and pose functionality.
AnimData * BKE_animdata_ensure_id(ID *id)
void BKE_animdata_free(ID *id, bool do_id_user)
Camera data-block and utility functions.
#define FOREACH_SCENE_OBJECT_END
bool BKE_scene_collections_object_remove(Main *bmain, Scene *scene, Object *ob, bool free_us)
bool BKE_collection_child_remove(Main *bmain, Collection *parent, Collection *child)
bool BKE_collection_has_object(Collection *collection, const Object *ob)
void BKE_collection_object_add_from(Main *bmain, Scene *scene, Object *ob_src, Object *ob_dst)
bool BKE_collection_cycle_find(Collection *new_ancestor, Collection *collection)
#define FOREACH_SCENE_OBJECT_BEGIN(scene, _instance)
bool BKE_collection_object_add(Main *bmain, Collection *collection, Object *ob)
void BKE_constraints_free(struct ListBase *list)
LayerCollection * CTX_data_layer_collection(const bContext *C)
#define CTX_DATA_BEGIN(C, Type, instance, member)
void CTX_wm_operator_poll_msg_set(bContext *C, const char *msg)
Depsgraph * CTX_data_ensure_evaluated_depsgraph(const bContext *C)
Object * CTX_data_active_object(const bContext *C)
Scene * CTX_data_scene(const bContext *C)
Object * CTX_data_edit_object(const bContext *C)
Base * CTX_data_active_base(const bContext *C)
Main * CTX_data_main(const bContext *C)
bool CTX_data_selected_editable_bases(const bContext *C, blender::Vector< PointerRNA > *list)
RegionView3D * CTX_wm_region_view3d(const bContext *C)
ARegion * CTX_wm_region(const bContext *C)
Collection * CTX_data_collection(const bContext *C)
wmWindowManager * CTX_wm_manager(const bContext *C)
View3D * CTX_wm_view3d(const bContext *C)
ViewLayer * CTX_data_view_layer(const bContext *C)
void BKE_curve_dimension_update(Curve *cu)
Low-level operations for curves that cannot be defined in the C++ header yet.
Low-level operations for curves.
CustomData interface, see also DNA_customdata_types.h.
void CustomData_MeshMasks_update(CustomData_MeshMasks *mask_dst, const CustomData_MeshMasks *mask_src)
bool CustomData_has_layer(const CustomData *data, eCustomDataType type)
const char * CustomData_get_active_layer_name(const CustomData *data, eCustomDataType type)
const CustomData_MeshMasks CD_MASK_MESH
display list (or rather multi purpose list) stuff.
ListBase * object_duplilist(Depsgraph *depsgraph, Scene *sce, Object *ob)
void free_object_duplilist(ListBase *lb)
struct PartDeflect * BKE_partdeflect_new(int type)
Low-level operations for grease pencil.
void BKE_grease_pencil_nomain_to_grease_pencil(GreasePencil *grease_pencil_src, GreasePencil *grease_pencil_dst)
GreasePencil * BKE_grease_pencil_new_nomain()
GreasePencil * BKE_grease_pencil_copy_for_eval(const GreasePencil *grease_pencil_src)
LayerCollection * BKE_layer_collection_get_active(ViewLayer *view_layer)
void BKE_view_layer_synced_ensure(const Scene *scene, ViewLayer *view_layer)
Base * BKE_view_layer_active_base_get(ViewLayer *view_layer)
blender::Vector< Object * > BKE_view_layer_array_selected_objects_params(ViewLayer *view_layer, const View3D *v3d, const ObjectsInViewLayerParams *params)
Object * BKE_view_layer_active_object_get(const ViewLayer *view_layer)
Base * BKE_view_layer_base_find(ViewLayer *view_layer, Object *ob)
LayerCollection * BKE_layer_collection_activate_parent(ViewLayer *view_layer, LayerCollection *lc)
void BKE_base_eval_flags(Base *base)
Object * BKE_view_layer_edit_object_get(const ViewLayer *view_layer)
void size_t BKE_id_multi_tagged_delete(Main *bmain) ATTR_NONNULL()
bool BKE_id_is_editable(const Main *bmain, const ID *id)
void BKE_id_free(Main *bmain, void *idv)
void BKE_main_id_newptr_and_tag_clear(Main *bmain)
ID * BKE_id_copy(Main *bmain, const ID *id)
void * BKE_id_new(Main *bmain, short type, const char *name)
void BKE_main_id_tag_listbase(ListBase *lb, int tag, bool value)
@ LIB_ID_DUPLICATE_IS_ROOT_ID
@ LIB_ID_DUPLICATE_IS_SUBPROCESS
void * BKE_id_new_nomain(short type, const char *name)
void BKE_main_id_tag_all(Main *mainvar, int tag, bool value)
bool BKE_lib_override_library_id_is_user_deletable(Main *bmain, ID *id)
bool BKE_library_ID_is_indirectly_used(Main *bmain, void *idv)
@ ID_REMAP_FORCE_OBDATA_IN_EDITMODE
void BKE_libblock_relink_to_newid(Main *bmain, ID *id, int remap_flag) ATTR_NONNULL()
General operations, lookup, etc. for blender lights.
General operations for probes.
void BKE_lightprobe_type_set(struct LightProbe *probe, short lightprobe_type)
#define FOREACH_MAIN_ID_END
#define FOREACH_MAIN_ID_BEGIN(_bmain, _id)
General operations, lookup, etc. for materials.
struct Material * BKE_object_material_get(struct Object *ob, short act)
void BKE_object_materials_test(struct Main *bmain, struct Object *ob, struct ID *id)
void BKE_object_material_from_eval_data(struct Main *bmain, struct Object *ob_orig, const struct ID *data_eval)
short * BKE_id_material_len_p(struct ID *id)
bool BKE_mball_is_basis(const Object *ob)
Object * BKE_mball_basis_find(Scene *scene, Object *ob)
void BKE_mesh_to_curve(Main *bmain, Depsgraph *depsgraph, Scene *scene, Object *ob)
void BKE_mesh_to_pointcloud(Main *bmain, Depsgraph *depsgraph, Scene *scene, Object *ob)
void BKE_pointcloud_to_mesh(Main *bmain, Depsgraph *depsgraph, Scene *scene, Object *ob)
Mesh * BKE_mesh_new_nomain(int verts_num, int edges_num, int faces_num, int corners_num)
void BKE_mesh_nomain_to_mesh(Mesh *mesh_src, Mesh *mesh_dst, Object *ob)
void BKE_mesh_merge_customdata_for_apply_modifier(Mesh *mesh)
Mesh * BKE_mesh_copy_for_eval(const Mesh &source)
Mesh * BKE_mesh_new_from_object_to_bmain(Main *bmain, Depsgraph *depsgraph, Object *object, bool preserve_all_data_layers)
void BKE_modifiers_persistent_uid_init(const Object &object, ModifierData &md)
void BKE_modifier_unique_name(ListBase *modifiers, ModifierData *md)
ModifierData * BKE_modifier_new(int type)
bool BKE_nlatrack_add_strip(NlaTrack *nlt, NlaStrip *strip, bool is_liboverride)
void BKE_nlatrack_set_active(ListBase *tracks, NlaTrack *nlt)
NlaTrack * BKE_nlatrack_new_tail(ListBase *nla_tracks, const bool is_liboverride)
NlaStrip * BKE_nla_add_soundstrip(Main *bmain, Scene *scene, Speaker *speaker)
void BKE_nlastrip_validate_name(AnimData *adt, NlaStrip *strip)
General operations, lookup, etc. for blender objects.
void BKE_object_empty_draw_type_set(Object *ob, int value)
bool BKE_object_is_in_editmode(const Object *ob)
Object * BKE_object_add_for_data(Main *bmain, const Scene *scene, ViewLayer *view_layer, int type, const char *name, ID *data, bool do_id_user) ATTR_RETURNS_NONNULL
void BKE_object_apply_mat4(Object *ob, const float mat[4][4], bool use_compat, bool use_parent)
Mesh * BKE_object_get_evaluated_mesh(const Object *object_eval)
Object * BKE_object_add(Main *bmain, Scene *scene, ViewLayer *view_layer, int type, const char *name) ATTR_NONNULL(1
bool BKE_object_obdata_is_libdata(const Object *ob)
void BKE_object_free_curve_cache(Object *ob)
void BKE_object_free_modifiers(Object *ob, int flag)
void BKE_object_obdata_size_init(Object *ob, float size)
Object * BKE_object_duplicate(Main *bmain, Object *ob, eDupli_ID_Flags dupflag, uint duplicate_options)
void BKE_object_to_mat4(const Object *ob, float r_mat[4][4])
int BKE_object_obdata_to_type(const ID *id) ATTR_NONNULL(1)
void BKE_object_free_shaderfx(Object *ob, int flag)
void BKE_object_free_derived_caches(Object *ob)
General operations for point clouds.
void BKE_reportf(ReportList *reports, eReportType type, const char *format,...) ATTR_PRINTF_FORMAT(3
void BKE_report(ReportList *reports, eReportType type, const char *message)
void BKE_scene_graph_update_tagged(Depsgraph *depsgraph, Main *bmain)
void BKE_scene_object_base_flag_sync_from_base(Base *base)
General operations for speakers.
bool BKE_vfont_to_curve_ex(Object *ob, Curve *cu, eEditFontMode mode, ListBase *r_nubase, const char32_t **r_text, int *r_text_len, bool *r_text_free, CharTrans **r_chartransdata)
unsigned int BLI_ghashutil_ptrhash(const void *key)
GHash * BLI_ghash_new(GHashHashFP hashfp, GHashCmpFP cmpfp, const char *info) ATTR_MALLOC ATTR_WARN_UNUSED_RESULT
GHash * BLI_ghash_ptr_new(const char *info) ATTR_MALLOC ATTR_WARN_UNUSED_RESULT
void * BLI_ghash_lookup(const GHash *gh, const void *key) ATTR_WARN_UNUSED_RESULT
void BLI_ghash_insert(GHash *gh, void *key, void *val)
void BLI_ghash_free(GHash *gh, GHashKeyFreeFP keyfreefp, GHashValFreeFP valfreefp)
bool BLI_ghash_ensure_p(GHash *gh, void *key, void ***r_val) ATTR_WARN_UNUSED_RESULT
#define BLI_ghashutil_inthash(key)
BLI_INLINE bool BLI_listbase_is_empty(const struct ListBase *lb)
#define LISTBASE_FOREACH(type, var, list)
void * BLI_findlink(const struct ListBase *listbase, int number) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1)
void BLI_addtail(struct ListBase *listbase, void *vlink) ATTR_NONNULL(1)
void mul_m3_v3(const float M[3][3], float r[3])
void mul_m4_m4m4(float R[4][4], const float A[4][4], const float B[4][4])
void mul_mat3_m4_fl(float R[4][4], float f)
void copy_m3_m4(float m1[3][3], const float m2[4][4])
void normalize_m4_m4(float rmat[4][4], const float mat[4][4]) ATTR_NONNULL()
bool invert_m3_m3(float inverse[3][3], const float mat[3][3])
void unit_m4(float m[4][4])
void copy_m4_m3(float m1[4][4], const float m2[3][3])
void translate_m4(float mat[4][4], float Tx, float Ty, float Tz)
void rescale_m4(float mat[4][4], const float scale[3])
void copy_m4_m4(float m1[4][4], const float m2[4][4])
bool invert_m4_m4(float inverse[4][4], const float mat[4][4])
void loc_eul_size_to_mat4(float R[4][4], const float loc[3], const float eul[3], const float size[3])
bool invert_m4(float mat[4][4])
void mul_m3_m3m3(float R[3][3], const float A[3][3], const float B[3][3])
bool invert_m3(float mat[3][3])
void eul_to_mat3(float mat[3][3], const float eul[3])
void axis_angle_to_quat(float r[4], const float axis[3], float angle)
void quat_to_eul(float eul[3], const float quat[4])
void mat3_normalized_to_eul(float eul[3], const float mat[3][3])
void mul_qt_qtqt(float q[4], const float a[4], const float b[4])
void copy_qt_qt(float q[4], const float a[4])
MINLINE void sub_v3_v3v3(float r[3], const float a[3], const float b[3])
MINLINE void copy_v3_v3(float r[3], const float a[3])
MINLINE void negate_v3_v3(float r[3], const float a[3])
MINLINE void copy_v3_fl(float r[3], float f)
MINLINE void zero_v3(float r[3])
char * BLI_strdup(const char *str) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1) ATTR_MALLOC
#define STRNCPY(dst, src)
#define STRNCPY_UTF8(dst, src)
#define BLT_I18NCONTEXT_ID_ID
#define BLT_I18NCONTEXT_ID_GPENCIL
#define BLT_I18NCONTEXT_ID_LIGHT
#define BLT_I18NCONTEXT_ID_OBJECT
#define BLT_I18NCONTEXT_OPERATOR_DEFAULT
#define CTX_DATA_(context, msgid)
void DEG_id_tag_update(ID *id, unsigned int flags)
void DEG_id_type_tag(Main *bmain, short id_type)
void DEG_id_tag_update_ex(Main *bmain, ID *id, unsigned int flags)
void DEG_relations_tag_update(Main *bmain)
void DEG_graph_tag_relations_update(Depsgraph *graph)
Object * DEG_get_original_object(Object *object)
Object * DEG_get_evaluated_object(const Depsgraph *depsgraph, Object *object)
#define ID_EXTRA_USERS(id)
#define ID_IS_EDITABLE(_id)
#define ID_REAL_USERS(id)
#define ID_IS_OVERRIDE_LIBRARY(_id)
#define ID_NEW_SET(_id, _idn)
Object groups, one object can be in many groups at once.
#define GPENCIL_ANY_MODE(gpd)
@ GREASE_PENCIL_STROKE_ORDER_3D
@ BASE_ENABLED_AND_MAYBE_VISIBLE_IN_VIEWPORT
@ LINEART_SOURCE_COLLECTION
@ eModifierType_GreasePencilLineart
Object is a sort of wrapper for general info.
@ OB_MODIFIER_FLAG_ADD_REST_POSITION
@ GREASE_PENCIL_LINEART_SCENE
@ GREASE_PENCIL_LINEART_COLLECTION
@ GREASE_PENCIL_LINEART_OBJECT
@ OB_EMPTY_IMAGE_DEPTH_BACK
@ OB_EMPTY_IMAGE_HIDE_BACK
@ OB_EMPTY_IMAGE_HIDE_PERSPECTIVE
#define BASE_SELECTED(v3d, base)
MetaElem * ED_mball_add_primitive(bContext *C, Object *obedit, bool obedit_is_new, float mat[4][4], float dia, int type)
int ED_mesh_shapes_join_objects_exec(bContext *C, wmOperator *op)
int ED_mesh_join_objects_exec(bContext *C, wmOperator *op)
#define OBJECT_ADD_SIZE_MAXF
void ED_outliner_select_sync_from_object_tag(bContext *C)
void ED_rigidbody_object_remove(Main *bmain, Scene *scene, Object *ob)
bool ED_operator_screenactive(bContext *C)
bool ED_operator_objectmode(bContext *C)
bool ED_operator_scene_editable(bContext *C)
bool ED_operator_objectmode_poll_msg(bContext *C)
float ED_view3d_grid_scale(const Scene *scene, const View3D *v3d, const char **r_grid_unit)
Object * ED_view3d_give_object_under_cursor(bContext *C, const int mval[2])
bool ED_view3d_snap_selected_to_location(bContext *C, wmOperator *op, const float snap_target_global[3], int pivot_point)
void ED_view3d_cursor3d_position(bContext *C, const int mval[2], bool use_depth, float r_cursor_co[3])
float ED_scene_grid_scale(const Scene *scene, const char **r_grid_unit)
Read Guarded memory(de)allocation.
const EnumPropertyItem * RNA_collection_itemf(bContext *C, PointerRNA *ptr, PropertyRNA *prop, bool *r_free)
void uiLayoutSetPropSep(uiLayout *layout, bool is_sep)
void uiItemR(uiLayout *layout, PointerRNA *ptr, const char *propname, eUI_Item_Flag flag, const char *name, int icon)
EditBone * ED_armature_ebone_add_primitive(Object *obedit_arm, float length, bool view_aligned)
int ED_armature_join_objects_exec(bContext *C, wmOperator *op)
void append(const T &value)
IndexRange index_range() const
MutableSpan< float3 > positions_for_write()
IndexRange points_range() const
bke::CurvesGeometry & strokes_for_write()
local_group_size(16, 16) .push_constant(Type b
const Depsgraph * depsgraph
int ED_curve_join_objects_exec(bContext *C, wmOperator *op)
static int duplicate_exec(bContext *C, wmOperator *op)
Nurb * ED_curve_add_nurbs_primitive(bContext *C, Object *obedit, float mat[4][4], int type, int newob)
draw_view in_light_buf[] float
int ED_grease_pencil_join_objects_exec(bContext *C, wmOperator *op)
bool object_has_geometry_set_instances(const Object &object)
bke::CurvesGeometry primitive_random_sphere(const int curves_size, const int points_per_curve)
void ensure_surface_deformation_node_exists(bContext &C, Object &curves_ob)
void create_suzanne(Main &bmain, Object &object, const float4x4 &matrix, const int frame_number)
void create_blank(Main &bmain, Object &object, const int frame_number)
void create_stroke(Main &bmain, Object &object, const float4x4 &matrix, const int frame_number)
static uint dupliobject_instancer_hash(const void *ptr)
void OBJECT_OT_metaball_add(wmOperatorType *ot)
static int object_join_exec(bContext *C, wmOperator *op)
static int object_delete_exec(bContext *C, wmOperator *op)
void add_unit_props_radius(wmOperatorType *ot)
static int object_duplicates_make_real_exec(bContext *C, wmOperator *op)
static void object_data_convert_curve_to_mesh(Main *bmain, Depsgraph *depsgraph, Object *ob)
Object * add_type(bContext *C, int type, const char *name, const float loc[3], const float rot[3], bool enter_editmode, unsigned short local_view_bits) ATTR_NONNULL(1) ATTR_RETURNS_NONNULL
void OBJECT_OT_curves_empty_hair_add(wmOperatorType *ot)
static Base * duplibase_for_convert(Main *bmain, Depsgraph *depsgraph, Scene *scene, ViewLayer *view_layer, Base *base, Object *ob)
static void object_add_duplicate_internal(Main *bmain, Object *ob, const eDupli_ID_Flags dupflag, const eLibIDDuplicateFlags duplicate_options, Object **r_ob_new)
void OBJECT_OT_text_add(wmOperatorType *ot)
static int effector_add_exec(bContext *C, wmOperator *op)
Object * add_type_with_obdata(bContext *C, int type, const char *name, const float loc[3], const float rot[3], bool enter_editmode, ushort local_view_bits, ID *obdata)
static const char * get_light_defname(int type)
static int lightprobe_add_exec(bContext *C, wmOperator *op)
static void object_add_drop_xy_props(wmOperatorType *ot)
void object_xform_array_m4(Object **objects, uint objects_len, const float matrix[4][4])
static int collection_drop_exec(bContext *C, wmOperator *op)
void OBJECT_OT_delete(wmOperatorType *ot)
static bool object_convert_poll(bContext *C)
void OBJECT_OT_transform_to_mouse(wmOperatorType *ot)
static bool object_join_poll(bContext *C)
void OBJECT_OT_collection_instance_add(wmOperatorType *ot)
void add_unit_props_size(wmOperatorType *ot)
static const char * get_effector_defname(ePFieldType type)
static const EnumPropertyItem align_options[]
static EnumPropertyItem rna_enum_gpencil_add_stroke_depth_order_items[]
float new_primitive_matrix(bContext *C, Object *obedit, const float loc[3], const float rot[3], const float scale[3], float primmat[4][4])
static int object_data_instance_add_exec(bContext *C, wmOperator *op)
static int object_light_add_exec(bContext *C, wmOperator *op)
void rotation_from_view(bContext *C, float rot[3], char align_axis)
static int object_grease_pencil_add_exec(bContext *C, wmOperator *op)
void base_activate(bContext *C, Base *base)
static int join_shapes_exec(bContext *C, wmOperator *op)
static const EnumPropertyItem field_type_items[]
void OBJECT_OT_collection_external_asset_drop(wmOperatorType *ot)
void OBJECT_OT_data_instance_add(wmOperatorType *ot)
void OBJECT_OT_armature_add(wmOperatorType *ot)
void OBJECT_OT_speaker_add(wmOperatorType *ot)
static void object_add_sync_base_collection(Main *bmain, Scene *scene, ViewLayer *view_layer, Base *base_src, Object *object_new)
static int collection_instance_add_exec(bContext *C, wmOperator *op)
static int object_curves_random_add_exec(bContext *C, wmOperator *op)
static int object_pointcloud_add_exec(bContext *C, wmOperator *op)
static void object_add_sync_local_view(Base *base_src, Base *base_new)
static bool dupliobject_instancer_cmp(const void *a_, const void *b_)
void base_select(Base *base, eObjectSelect_Mode mode)
static bool dupliobject_cmp(const void *a_, const void *b_)
void base_free_and_unlink_no_indirect_check(Main *bmain, Scene *scene, Object *ob)
static void object_add_sync_rigid_body(Main *bmain, Object *object_src, Object *object_new)
void add_unit_props_radius_ex(wmOperatorType *ot, float default_value)
void rotation_from_quat(float rot[3], const float quat[4], char align_axis)
static bool object_curves_empty_hair_add_poll(bContext *C)
static void object_convert_ui(bContext *, wmOperator *op)
static void view_align_update(Main *, Scene *, PointerRNA *ptr)
static int object_curves_empty_hair_add_exec(bContext *C, wmOperator *op)
static const EnumPropertyItem * convert_target_itemf(bContext *C, PointerRNA *, PropertyRNA *, bool *r_free)
void OBJECT_OT_lightprobe_add(wmOperatorType *ot)
static const char * get_lightprobe_defname(int type)
void OBJECT_OT_join_shapes(wmOperatorType *ot)
void OBJECT_OT_grease_pencil_add(wmOperatorType *ot)
static bool join_shapes_poll(bContext *C)
void OBJECT_OT_convert(wmOperatorType *ot)
bool parent_set(ReportList *reports, const bContext *C, Scene *scene, Object *const ob, Object *const par, int partype, bool xmirror, bool keep_transform, const int vert_par[3])
static int object_add_text_exec(bContext *C, wmOperator *op)
bool editmode_enter_ex(Main *bmain, Scene *scene, Object *ob, int flag)
static void copy_object_set_idnew(bContext *C)
static int object_speaker_add_exec(bContext *C, wmOperator *op)
static bool object_pointcloud_add_poll(bContext *C)
void OBJECT_OT_effector_add(wmOperatorType *ot)
void OBJECT_OT_add_named(wmOperatorType *ot)
Base * add_duplicate(Main *bmain, Scene *scene, ViewLayer *view_layer, Base *base, eDupli_ID_Flags dupflag)
void OBJECT_OT_light_add(wmOperatorType *ot)
static EnumPropertyItem lightprobe_type_items[]
static int object_add_exec(bContext *C, wmOperator *op)
static int object_transform_to_mouse_exec(bContext *C, wmOperator *op)
void OBJECT_OT_empty_image_add(wmOperatorType *ot)
static bool object_image_add_poll(bContext *C)
static int object_delete_invoke(bContext *C, wmOperator *op, const wmEvent *)
static int object_add_drop_xy_generic_invoke(bContext *C, wmOperator *op, const wmEvent *event)
static bool object_add_drop_xy_get(bContext *C, wmOperator *op, int(*r_mval)[2])
void OBJECT_OT_empty_add(wmOperatorType *ot)
static int object_convert_exec(bContext *C, wmOperator *op)
void base_free_and_unlink(Main *bmain, Scene *scene, Object *ob)
static const EnumPropertyItem convert_target_items[]
static int object_instance_add_invoke(bContext *C, wmOperator *op, const wmEvent *event)
void OBJECT_OT_duplicates_make_real(wmOperatorType *ot)
static int object_image_add_exec(bContext *C, wmOperator *op)
bool base_deselect_all(const Scene *scene, ViewLayer *view_layer, View3D *v3d, int action)
void init_transform_on_add(Object *object, const float loc[3], const float rot[3])
void OBJECT_OT_add(wmOperatorType *ot)
void add_generic_props(wmOperatorType *ot, bool do_editmode)
static int object_image_add_invoke(bContext *C, wmOperator *op, const wmEvent *event)
static uint dupliobject_hash(const void *ptr)
static int object_armature_add_exec(bContext *C, wmOperator *op)
void OBJECT_OT_curves_random_add(wmOperatorType *ot)
void location_from_view(bContext *C, float loc[3])
void OBJECT_OT_pointcloud_add(wmOperatorType *ot)
static void make_object_duplilist_real(bContext *C, Depsgraph *depsgraph, Scene *scene, Base *base, const bool use_base_parent, const bool use_hierarchy)
static bool object_add_drop_xy_is_set(const wmOperator *op)
void add_mesh_props(wmOperatorType *ot)
void OBJECT_OT_duplicate(wmOperatorType *ot)
void OBJECT_OT_join(wmOperatorType *ot)
void add_generic_get_opts(bContext *C, wmOperator *op, char view_align_axis, float r_loc[3], float r_rot[3], float r_scale[3], bool *r_enter_editmode, unsigned short *r_local_view_bits, bool *r_is_view_aligned)
bool editmode_exit_ex(Main *bmain, Scene *scene, Object *obedit, int flag)
void OBJECT_OT_camera_add(wmOperatorType *ot)
static int object_camera_add_exec(bContext *C, wmOperator *op)
static int object_metaball_add_exec(bContext *C, wmOperator *op)
static std::optional< CollectionAddInfo > collection_add_info_get_from_op(bContext *C, wmOperator *op)
static int object_empty_add_exec(bContext *C, wmOperator *op)
static int object_add_named_exec(bContext *C, wmOperator *op)
VecBase< T, 3 > transform_point(const CartesianBasis &basis, const VecBase< T, 3 > &v)
const EnumPropertyItem rna_enum_light_type_items[]
const EnumPropertyItem rna_enum_id_type_items[]
PropertyRNA * RNA_struct_type_find_property(StructRNA *srna, const char *identifier)
void RNA_property_float_get_array(PointerRNA *ptr, PropertyRNA *prop, float *values)
PropertyRNA * RNA_struct_find_property(PointerRNA *ptr, const char *identifier)
void RNA_boolean_set(PointerRNA *ptr, const char *name, bool value)
bool RNA_property_is_set(PointerRNA *ptr, PropertyRNA *prop)
void RNA_int_set(PointerRNA *ptr, const char *name, int value)
void RNA_property_enum_set(PointerRNA *ptr, PropertyRNA *prop, int value)
void RNA_float_get_array(PointerRNA *ptr, const char *name, float *values)
bool RNA_property_boolean_get(PointerRNA *ptr, PropertyRNA *prop)
int RNA_int_get(PointerRNA *ptr, const char *name)
void RNA_property_boolean_set(PointerRNA *ptr, PropertyRNA *prop, bool value)
float RNA_float_get(PointerRNA *ptr, const char *name)
void RNA_property_float_set_array(PointerRNA *ptr, PropertyRNA *prop, const float *values)
int RNA_property_enum_get(PointerRNA *ptr, PropertyRNA *prop)
bool RNA_struct_property_is_set(PointerRNA *ptr, const char *identifier)
bool RNA_struct_idprops_unset(PointerRNA *ptr, const char *identifier)
bool RNA_boolean_get(PointerRNA *ptr, const char *name)
void RNA_enum_set(PointerRNA *ptr, const char *name, int value)
void RNA_float_set_array(PointerRNA *ptr, const char *name, const float *values)
int RNA_enum_get(PointerRNA *ptr, const char *name)
PropertyRNA * RNA_def_string(StructOrFunctionRNA *cont_, const char *identifier, const char *default_value, const int maxlen, const char *ui_name, const char *ui_description)
void RNA_def_property_float_default(PropertyRNA *prop, float value)
PropertyRNA * RNA_def_float_rotation(StructOrFunctionRNA *cont_, const char *identifier, const int len, const float *default_value, const float hardmin, const float hardmax, const char *ui_name, const char *ui_description, const float softmin, const float softmax)
PropertyRNA * RNA_def_float_distance(StructOrFunctionRNA *cont_, const char *identifier, const float default_value, const float hardmin, const float hardmax, const char *ui_name, const char *ui_description, const float softmin, const float softmax)
PropertyRNA * RNA_def_float_matrix(StructOrFunctionRNA *cont_, const char *identifier, const int rows, const int columns, const float *default_value, const float hardmin, const float hardmax, const char *ui_name, const char *ui_description, const float softmin, const float softmax)
PropertyRNA * RNA_def_float(StructOrFunctionRNA *cont_, const char *identifier, const float default_value, const float hardmin, const float hardmax, const char *ui_name, const char *ui_description, const float softmin, const float softmax)
void RNA_def_property_update_runtime(PropertyRNA *prop, RNAPropertyUpdateFunc func)
PropertyRNA * RNA_def_enum(StructOrFunctionRNA *cont_, const char *identifier, const EnumPropertyItem *items, const int default_value, const char *ui_name, const char *ui_description)
PropertyRNA * RNA_def_float_vector_xyz(StructOrFunctionRNA *cont_, const char *identifier, const int len, const float *default_value, const float hardmin, const float hardmax, const char *ui_name, const char *ui_description, const float softmin, const float softmax)
void RNA_enum_item_end(EnumPropertyItem **items, int *totitem)
PropertyRNA * RNA_def_boolean(StructOrFunctionRNA *cont_, const char *identifier, const bool default_value, const char *ui_name, const char *ui_description)
void RNA_def_property_translation_context(PropertyRNA *prop, const char *context)
void RNA_def_property_flag(PropertyRNA *prop, PropertyFlag flag)
void RNA_def_enum_funcs(PropertyRNA *prop, EnumPropertyItemFunc itemfunc)
void RNA_enum_items_add_value(EnumPropertyItem **items, int *totitem, const EnumPropertyItem *item, int value)
PropertyRNA * RNA_def_int(StructOrFunctionRNA *cont_, const char *identifier, const int default_value, const int hardmin, const int hardmax, const char *ui_name, const char *ui_description, const int softmin, const int softmax)
const EnumPropertyItem rna_enum_object_empty_drawtype_items[]
const EnumPropertyItem rna_enum_metaelem_type_items[]
const EnumPropertyItem rna_enum_object_gpencil_type_items[]
const EnumPropertyItem rna_enum_object_type_items[]
const EnumPropertyItem rna_enum_dummy_NULL_items[]
unsigned short local_view_bits
struct Collection * collection
struct Collection * instance_collection
ObjectRuntimeHandle * runtime
struct RigidBodyOb * rigidbody_object
struct RigidBodyCon * rigidbody_constraint
char empty_image_visibility_flag
unsigned short local_view_uid
const c_style_mat & ptr() const
const Curves * get_curves() const
bool(* poll)(bContext *C) ATTR_WARN_UNUSED_RESULT
int(* invoke)(bContext *C, wmOperator *op, const wmEvent *event) ATTR_WARN_UNUSED_RESULT
int(* exec)(bContext *C, wmOperator *op) ATTR_WARN_UNUSED_RESULT
void(* ui)(bContext *C, wmOperator *op)
struct ReportList * reports
struct wmOperatorType * type
void WM_event_add_fileselect(bContext *C, wmOperator *op)
void WM_main_add_notifier(uint type, void *reference)
void WM_event_add_notifier(const bContext *C, uint type, void *reference)
void WM_operator_properties_confirm_or_exec(wmOperatorType *ot)
bool WM_operator_properties_id_lookup_is_set(PointerRNA *ptr)
ID * WM_operator_properties_id_lookup_from_name_or_session_uid(Main *bmain, PointerRNA *ptr, const ID_Type type)
void WM_operator_properties_filesel(wmOperatorType *ot, const int filter, const short type, const eFileSel_Action action, const eFileSel_Flag flag, const short display, const short sort)
void WM_operator_properties_id_lookup(wmOperatorType *ot, const bool add_name_prop)
int WM_menu_invoke(bContext *C, wmOperator *op, const wmEvent *)
int WM_operator_confirm_ex(bContext *C, wmOperator *op, const char *title, const char *message, const char *confirm_text, int icon, bool cancel_default)
void WM_operator_view3d_unit_defaults(bContext *C, wmOperator *op)
int WM_enum_search_invoke(bContext *C, wmOperator *op, const wmEvent *)
ID * WM_operator_drop_load_path(bContext *C, wmOperator *op, const short idcode)
Scene * WM_window_get_active_scene(const wmWindow *win)