78 #include "RNA_prototypes.h"
138 const int mode = md_eval->
mode;
141 md_eval->
mode = mode;
240 if ((md != exclude) && (md->type ==
type)) {
250 const bool include_orig,
254 ID *ob_data_id =
static_cast<ID *
>(orig_ob->
data);
264 int totfound = include_orig ? 0 : 1;
268 if (((ob != orig_ob) || include_orig) && (ob->
data == orig_ob->
data)) {
277 else if (include_orig) {
278 return callback(orig_ob, callback_data);
293 int totlevel = *((
char *)totlevel_v);
341 *r_sort_depsgraph =
true;
344 *r_sort_depsgraph =
true;
374 bool sort_depsgraph =
false;
392 bool sort_depsgraph =
false;
472 if (md_index < index) {
474 for (; md_index < index; md_index++) {
482 for (; md_index > index; md_index--) {
553 int verts_num = 0, edges_num = 0;
555 for (
int a = 0;
a < part_num;
a++) {
565 for (
int a = 0;
a < child_num;
a++) {
574 if (verts_num == 0) {
594 for (
int a = 0;
a < part_num;
a++) {
597 for (
int k = 0; k <= kmax; k++, key++, cvert++, mvert++) {
600 medge->
v1 = cvert - 1;
613 for (
int a = 0;
a < child_num;
a++) {
616 for (
int k = 0; k <= kmax; k++, key++, cvert++, mvert++) {
619 medge->
v1 = cvert - 1;
640 bool use_virtual_modifiers,
641 bool build_shapekey_layers)
646 depsgraph, scene_eval, object_eval, md_eval, use_virtual_modifiers, build_shapekey_layers);
690 if (key ==
nullptr) {
775 reports,
RPT_ERROR,
"Transform curve to mesh in order to apply constructive modifiers");
781 "Applied modifier only changed CV points, not tessellated/bevel vertices");
785 mti->
deformVerts(md_eval, &mectx,
nullptr, vertexCos, verts_num);
804 mti->
deformVerts(md_eval, &mectx,
nullptr, vertexCos, verts_num);
826 BKE_report(reports,
RPT_ERROR,
"Evaluated geometry from modifier does not contain curves");
883 "Constructive modifier cannot be applied to multi-res data in sculpt mode");
888 BKE_report(reports,
RPT_INFO,
"Applied modifier was not first, result may not be as expected");
897 int prev_mode = md_eval->
mode;
902 md_eval->
mode = prev_mode;
908 md_eval->
mode = prev_mode;
913 md_eval->
mode = prev_mode;
915 if (!keep_modifier) {
1000 group_item = md_item;
1006 group_item =
nullptr;
1023 ot->
name =
"Add Modifier";
1024 ot->
description =
"Add a procedural operation/effect to the active object";
1025 ot->
idname =
"OBJECT_OT_modifier_add";
1053 const bool is_editmode_allowed,
1061 if (
mod ==
nullptr && ob !=
nullptr) {
1068 if (obtype_flag && ((1 << ob->
type) & obtype_flag) == 0) {
1077 C,
"Cannot edit modifiers coming from linked data in a library override");
1104 ot->
srna,
"modifier",
nullptr,
MAX_NAME,
"Modifier",
"Name of the modifier to edit");
1111 ot->
srna,
"report",
false,
"Report",
"Create a notification after the operation");
1130 if (ctx_ptr.
data !=
nullptr) {
1155 if (ctx_ptr.
data !=
nullptr) {
1207 int mode_orig = ob->
mode;
1209 if (md ==
nullptr) {
1215 strcpy(name, md->
name);
1226 if (ob ==
OBACT(view_layer)) {
1250 ot->
name =
"Remove Modifier";
1251 ot->
description =
"Remove a modifier from the active object";
1252 ot->
idname =
"OBJECT_OT_modifier_remove";
1296 ot->
name =
"Move Up Modifier";
1298 ot->
idname =
"OBJECT_OT_modifier_move_up";
1341 ot->
name =
"Move Down Modifier";
1343 ot->
idname =
"OBJECT_OT_modifier_move_down";
1384 ot->
name =
"Move Active Modifier to Index";
1386 "Change the modifier's index in the stack so it evaluates after the set number of others";
1387 ot->
idname =
"OBJECT_OT_modifier_move_to_index";
1397 ot->
srna,
"index", 0, 0, INT_MAX,
"Index",
"The index to move the modifier to", 0, INT_MAX);
1421 if (md !=
nullptr) {
1425 C,
"Constructive modifier cannot be applied to multi-res data in sculpt mode");
1443 if (md ==
nullptr) {
1460 strcpy(name, md->
name);
1507 C, op,
"Make object data single-user and apply modifier");
1517 ot->
name =
"Apply Modifier";
1518 ot->
description =
"Apply modifier and remove from the stack";
1519 ot->
idname =
"OBJECT_OT_modifier_apply";
1535 "For mesh objects, merge UV coordinates that share a vertex to account for "
1536 "imprecision in some modifiers");
1540 "Make Data Single User",
1541 "Make the object's data single user if needed");
1579 return BLI_strdup(
TIP_(
"Apply modifier as a new shapekey and keep it in the stack"));
1587 ot->
name =
"Apply Modifier as Shape Key";
1588 ot->
description =
"Apply modifier as a new shape key and remove from the stack";
1589 ot->
idname =
"OBJECT_OT_modifier_apply_as_shapekey";
1600 ot->
srna,
"keep_modifier",
false,
"Keep Modifier",
"Do not remove the modifier from stack");
1640 ot->
name =
"Convert Particles to Mesh";
1642 ot->
idname =
"OBJECT_OT_modifier_convert";
1687 ot->
name =
"Copy Modifier";
1688 ot->
description =
"Duplicate modifier at the same position in the stack";
1689 ot->
idname =
"OBJECT_OT_modifier_copy";
1730 ot->
name =
"Set Active Modifier";
1731 ot->
description =
"Activate the modifier to use as the context";
1732 ot->
idname =
"OBJECT_OT_modifier_set_active";
1772 "Object '%s' does not support %s modifiers",
1782 "Modifier can only be added once to object '%s'",
1791 "Copying modifier '%s' to object '%s' failed",
1802 if (num_copied > 0) {
1848 bool found_supported_objects =
false;
1856 found_supported_objects =
true;
1860 found_supported_objects =
true;
1866 if (!found_supported_objects) {
1875 ot->
name =
"Copy Modifier to Selected";
1876 ot->
description =
"Copy the modifier from the active object to all selected objects";
1877 ot->
idname =
"OBJECT_OT_modifier_copy_to_selected";
1932 ot->
name =
"Delete Higher Levels";
1933 ot->
description =
"Deletes the higher resolution mesh, potential loss of detail";
1934 ot->
idname =
"OBJECT_OT_multires_higher_levels_delete";
1956 "Create a new level using Catmull-Clark subdivisions"},
1961 "Create a new level using simple subdivisions"},
1966 "Create a new level using linear interpolation of the sculpted displacement"},
1967 {0,
nullptr, 0,
nullptr,
nullptr},
2008 ot->
name =
"Multires Subdivide";
2010 ot->
idname =
"OBJECT_OT_multires_subdivide";
2024 "How the mesh is going to be subdivided to create a new level");
2044 if (mmd->
lvl == 0) {
2050 if (selob->type ==
OB_MESH && selob != ob) {
2083 ot->
name =
"Multires Reshape";
2084 ot->
description =
"Copy vertex coordinates from other object";
2085 ot->
idname =
"OBJECT_OT_multires_reshape";
2167 ot->
name =
"Multires Save External";
2169 ot->
idname =
"OBJECT_OT_multires_external_save";
2212 ot->
name =
"Multires Pack External";
2213 ot->
description =
"Pack displacements from an external file";
2214 ot->
idname =
"OBJECT_OT_multires_external_pack";
2262 ot->
name =
"Multires Apply Base";
2263 ot->
description =
"Modify the base mesh to conform to the displaced mesh";
2264 ot->
idname =
"OBJECT_OT_multires_base_apply";
2293 if (new_levels == 0) {
2314 ot->
name =
"Unsubdivide";
2315 ot->
description =
"Rebuild a lower subdivision level of the current base mesh";
2316 ot->
idname =
"OBJECT_OT_multires_unsubdivide";
2345 if (new_levels == 0) {
2370 ot->
name =
"Rebuild Lower Subdivisions";
2372 "Rebuilds all possible subdivisions levels to generate a lower resolution base mesh";
2373 ot->
idname =
"OBJECT_OT_multires_rebuild_subdiv";
2411 return (ob !=
nullptr &&
2472 ot->
name =
"Skin Root Mark";
2474 ot->
idname =
"OBJECT_OT_skin_root_mark";
2526 {
SKIN_LOOSE_MARK,
"MARK", 0,
"Mark",
"Mark selected vertices as loose"},
2527 {
SKIN_LOOSE_CLEAR,
"CLEAR", 0,
"Clear",
"Set selected vertices as not loose"},
2528 {0,
nullptr, 0,
nullptr,
nullptr},
2531 ot->
name =
"Skin Mark/Clear Loose";
2533 ot->
idname =
"OBJECT_OT_skin_loose_mark_clear";
2574 ot->
name =
"Skin Radii Equalize";
2575 ot->
description =
"Make skin radii of selected vertices equal on each axis";
2576 ot->
idname =
"OBJECT_OT_skin_radii_equalize";
2594 for (
int i = 0; i < emap[parent_v].
count; i++) {
2595 int endx = emap[parent_v].
indices[i];
2596 const MEdge *
e = &medge[endx];
2604 int v = (
e->v1 == parent_v ?
e->v2 :
e->v1);
2608 bone->
parent = parent_bone;
2609 if (parent_bone !=
nullptr) {
2620 if (dg !=
nullptr) {
2649 arm->
edbo = MEM_cnew<ListBase>(
"edbo armature");
2674 bone->
head[1] = 1.0f;
2678 if (emap[
v].
count >= 1) {
2737 ot->
name =
"Skin Armature Create";
2738 ot->
description =
"Create an armature that parallels the skin layout";
2739 ot->
idname =
"OBJECT_OT_skin_armature_create";
2778 const bool is_bind = (csmd->
bind_coords !=
nullptr);
2815 ot->
name =
"Corrective Smooth Bind";
2816 ot->
description =
"Bind base pose in Corrective Smooth modifier";
2817 ot->
idname =
"OBJECT_OT_correctivesmooth_bind";
2847 if (mmd ==
nullptr) {
2890 ot->
name =
"Mesh Deform Bind";
2891 ot->
description =
"Bind mesh to cage in mesh deform modifier";
2892 ot->
idname =
"OBJECT_OT_meshdeform_bind";
2943 ot->
name =
"Explode Refresh";
2945 ot->
idname =
"OBJECT_OT_explode_refresh";
2993 return (
G.is_break);
3031 oj->
ocean =
nullptr;
3119 OceanBakeJob *oj = MEM_cnew<OceanBakeJob>(
"ocean bake job");
3146 ot->
idname =
"OBJECT_OT_ocean_bake";
3177 if (lmd ==
nullptr) {
3199 if (lmd_eval->
vertexco ==
nullptr) {
3222 ot->
name =
"Laplacian Deform Bind";
3223 ot->
description =
"Bind mesh to system in laplacian deform modifier";
3224 ot->
idname =
"OBJECT_OT_laplaciandeform_bind";
3254 if (smd ==
nullptr) {
3289 ot->
name =
"Surface Deform Bind";
3290 ot->
description =
"Bind mesh to target in surface deform modifier";
3291 ot->
idname =
"OBJECT_OT_surfacedeform_bind";
3320 if (nmd ==
nullptr) {
3330 const int old_value =
RNA_int_get(&mod_ptr, prop_path);
3331 const int new_value = !old_value;
3341 ot->
name =
"Input Attribute Toggle";
3343 "Switch between an attribute and a single value to define the data for every element";
3344 ot->
idname =
"OBJECT_OT_geometry_nodes_input_attribute_toggle";
3372 if (
tree ==
nullptr) {
3379 if (new_tree ==
nullptr) {
3393 ot->
name =
"Copy Geometry Node Group";
3394 ot->
description =
"Copy the active geometry node group and assign it to the active modifier";
3395 ot->
idname =
"OBJECT_OT_geometry_node_tree_copy_assign";
typedef float(TangentPoint)[2]
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)
struct Scene * CTX_data_scene(const bContext *C)
struct Object * CTX_data_edit_object(const bContext *C)
struct wmWindowManager * CTX_wm_manager(const bContext *C)
#define CTX_DATA_BEGIN(C, Type, instance, member)
PointerRNA CTX_data_pointer_get_type(const bContext *C, const char *member, StructRNA *type)
struct ViewLayer * CTX_data_view_layer(const bContext *C)
struct Depsgraph * CTX_data_ensure_evaluated_depsgraph(const bContext *C)
struct Object * CTX_data_active_object(const bContext *C)
struct Depsgraph * CTX_data_depsgraph_pointer(const bContext *C)
void CTX_wm_operator_poll_msg_set(struct bContext *C, const char *msg)
struct Main * CTX_data_main(const bContext *C)
struct wmWindow * CTX_wm_window(const bContext *C)
float(* BKE_curve_nurbs_vert_coords_alloc(const struct ListBase *lb, int *r_vert_len))[3]
void BKE_curve_nurbs_vert_coords_apply(struct ListBase *lb, const float(*vert_coords)[3], bool constrain_2d)
Low-level operations for curves that cannot be defined in the C++ header yet.
void BKE_curves_data_update(struct Depsgraph *depsgraph, struct Scene *scene, struct Object *object)
Low-level operations for curves.
bool CustomData_free_layer_active(struct CustomData *data, int type, int totelem)
void CustomData_external_write(struct CustomData *data, struct ID *id, eCustomDataMask mask, int totelem, int free)
void CustomData_external_add(struct CustomData *data, struct ID *id, int type, int totelem, const char *filepath)
bool CustomData_has_layer(const struct CustomData *data, int type)
const CustomData_MeshMasks CD_MASK_BAREMESH
void * CustomData_get_layer(const struct CustomData *data, int type)
bool CustomData_external_test(struct CustomData *data, int type)
void * CustomData_bmesh_get(const struct CustomData *data, void *block, int type)
void * CustomData_add_layer(struct CustomData *data, int type, eCDAllocType alloctype, void *layer, int totelem)
void CustomData_external_remove(struct CustomData *data, struct ID *id, int type, int totelem)
int CustomData_get_offset(const struct CustomData *data, int type)
const CustomData_MeshMasks CD_MASK_MESH
display list (or rather multi purpose list) stuff.
void BKE_displist_make_curveTypes(struct Depsgraph *depsgraph, const struct Scene *scene, struct Object *ob, bool for_render)
void BKE_displist_make_mball(struct Depsgraph *depsgraph, struct Scene *scene, struct Object *ob)
BMEditMesh * BKE_editmesh_from_object(struct Object *ob)
Return the BMEditMesh for a given object.
struct PartDeflect * BKE_partdeflect_new(int type)
void BKE_gpencil_modifiers_calc(struct Depsgraph *depsgraph, struct Scene *scene, struct Object *ob)
void BKE_keyblock_convert_from_mesh(const struct Mesh *me, const struct Key *key, struct KeyBlock *kb)
struct KeyBlock * BKE_keyblock_add(struct Key *key, const char *name)
struct Key * BKE_key_add(struct Main *bmain, struct ID *id)
void BKE_lattice_modifiers_calc(struct Depsgraph *depsgraph, struct Scene *scene, struct Object *ob)
float(* BKE_lattice_vert_coords_alloc(const struct Lattice *lt, int *r_vert_len))[3]
void BKE_lattice_vert_coords_apply(struct Lattice *lt, const float(*vert_coords)[3])
void BKE_main_id_newptr_and_tag_clear(struct Main *bmain)
struct ID * BKE_id_copy_ex(struct Main *bmain, const struct ID *id, struct ID **r_newid, int flag)
bool BKE_id_is_editable(const struct Main *bmain, const struct ID *id)
void id_us_min(struct ID *id)
void BKE_id_free(struct Main *bmain, void *idv)
const char * BKE_main_blendfile_path(const struct Main *bmain) ATTR_NONNULL()
General operations, lookup, etc. for materials.
void BKE_object_material_from_eval_data(struct Main *bmain, struct Object *ob_orig, const struct ID *data_eval)
void BKE_mesh_ensure_skin_customdata(struct Mesh *me)
void BKE_mesh_nomain_to_mesh(struct Mesh *mesh_src, struct Mesh *mesh_dst, struct Object *ob, const struct CustomData_MeshMasks *mask, bool take_ownership)
void BKE_mesh_nomain_to_meshkey(struct Mesh *mesh_src, struct Mesh *mesh_dst, struct KeyBlock *kb)
void BKE_mesh_merge_customdata_for_apply_modifier(struct Mesh *me)
void BKE_mesh_eval_delete(struct Mesh *mesh_eval)
struct Mesh * BKE_mesh_create_derived_for_modifier(struct Depsgraph *depsgraph, struct Scene *scene, struct Object *ob_eval, struct ModifierData *md_eval, bool use_virtual_modifiers, bool build_shapekey_layers)
void BKE_mesh_vert_edge_map_create(MeshElemMap **r_map, int **r_mem, const struct MEdge *medge, int totvert, int totedge)
struct Mesh * mesh_get_eval_deform(struct Depsgraph *depsgraph, const struct Scene *scene, struct Object *ob, const struct CustomData_MeshMasks *dataMask)
struct Mesh * mesh_create_eval_final(struct Depsgraph *depsgraph, const struct Scene *scene, struct Object *ob, const struct CustomData_MeshMasks *dataMask)
const ModifierTypeInfo * BKE_modifier_get_info(ModifierType type)
bool BKE_modifier_is_enabled(const struct Scene *scene, struct ModifierData *md, int required_mode)
bool BKE_modifier_is_nonlocal_in_liboverride(const struct Object *ob, const struct ModifierData *md)
@ eModifierTypeFlag_Single
@ eModifierTypeFlag_NoUserAdd
@ eModifierTypeFlag_RequiresOriginalData
void BKE_modifier_free(struct ModifierData *md)
const char * BKE_modifier_path_relbase(struct Main *bmain, struct Object *ob)
void BKE_modifier_copydata(const struct ModifierData *md, struct ModifierData *target)
struct ModifierData * BKE_modifier_get_evaluated(struct Depsgraph *depsgraph, struct Object *object, struct ModifierData *md)
struct ModifierData * BKE_modifiers_findby_type(const struct Object *ob, ModifierType type)
bool BKE_modifier_is_same_topology(ModifierData *md)
void BKE_modifier_remove_from_list(struct Object *ob, struct ModifierData *md)
struct ModifierData * BKE_modifier_new(int type)
@ eModifierTypeType_OnlyDeform
@ eModifierTypeType_NonGeometrical
@ eModifierTypeType_Constructive
@ eModifierTypeType_Nonconstructive
struct ModifierData * BKE_modifiers_findby_name(const struct Object *ob, const char *name)
bool BKE_modifier_unique_name(struct ListBase *modifiers, struct ModifierData *md)
void multires_set_tot_level(struct Object *ob, struct MultiresModifierData *mmd, int lvl)
void multiresModifier_del_levels(struct MultiresModifierData *mmd, struct Scene *scene, struct Object *object, int direction)
void multires_force_sculpt_rebuild(struct Object *object)
struct MultiresModifierData * find_multires_modifier_before(struct Scene *scene, struct ModifierData *lastmd)
void multiresModifier_set_levels_from_disps(struct MultiresModifierData *mmd, struct Object *ob)
void multiresModifier_base_apply(struct Depsgraph *depsgraph, struct Object *object, struct MultiresModifierData *mmd)
void multires_customdata_delete(struct Mesh *me)
bool multiresModifier_reshapeFromObject(struct Depsgraph *depsgraph, struct MultiresModifierData *mmd, struct Object *dst, struct Object *src)
int multiresModifier_rebuild_subdiv(struct Depsgraph *depsgraph, struct Object *object, struct MultiresModifierData *mmd, int rebuild_limit, bool switch_view_to_lower_level)
eMultiresSubdivideModeType
@ MULTIRES_SUBDIVIDE_LINEAR
@ MULTIRES_SUBDIVIDE_CATMULL_CLARK
@ MULTIRES_SUBDIVIDE_SIMPLE
bool multiresModifier_reshapeFromDeformModifier(struct Depsgraph *depsgraph, struct Object *ob, struct MultiresModifierData *mmd, struct ModifierData *deform_md)
void multiresModifier_subdivide(struct Object *object, struct MultiresModifierData *mmd, eMultiresSubdivideModeType mode)
General operations, lookup, etc. for blender objects.
bool BKE_object_support_modifier_type_check(const struct Object *ob, int modifier_type)
void BKE_object_modifier_set_active(struct Object *ob, struct ModifierData *md)
void BKE_object_link_modifiers(struct Object *ob_dst, const struct Object *ob_src)
struct Object * BKE_object_add(struct Main *bmain, struct ViewLayer *view_layer, int type, const char *name) ATTR_NONNULL(1
void BKE_object_transform_copy(struct Object *ob_tar, const struct Object *ob_src)
void BKE_object_free_derived_caches(struct Object *ob)
bool BKE_object_supports_modifiers(const struct Object *ob)
bool BKE_object_copy_modifier(struct Main *bmain, struct Scene *scene, struct Object *ob_dst, const struct Object *ob_src, struct ModifierData *md)
struct ModifierData * BKE_object_active_modifier(const struct Object *ob)
bool BKE_object_is_in_editmode(const struct Object *ob)
void BKE_object_eval_reset(struct Object *ob_eval)
void BKE_ocean_bake(struct Ocean *o, struct OceanCache *och, void(*update_cb)(void *, float progress, int *cancel), void *update_cb_data)
struct OceanCache * BKE_ocean_init_cache(const char *bakepath, const char *relbase, int start, int end, float wave_scale, float chop_amount, float foam_coverage, float foam_fade, int resolution)
void BKE_ocean_free_modifier_cache(struct OceanModifierData *omd)
struct Ocean * BKE_ocean_add(void)
bool BKE_ocean_init_from_modifier(struct Ocean *ocean, struct OceanModifierData const *omd, int resolution)
void BKE_ocean_free(struct Ocean *oc)
int BKE_sculpt_mask_layers_ensure(struct Object *ob, struct MultiresModifierData *mmd)
struct ParticleSystem * psys_eval_get(struct Depsgraph *depsgraph, struct Object *object, struct ParticleSystem *psys)
void object_remove_particle_system(struct Main *bmain, struct Scene *scene, struct Object *ob, struct ParticleSystem *psys)
struct ModifierData * object_add_particle_system(struct Main *bmain, struct Scene *scene, struct Object *ob, const char *name)
void psys_apply_hair_lattice(struct Depsgraph *depsgraph, struct Scene *scene, struct Object *ob, struct ParticleSystem *psys)
struct ModifierData * object_copy_particle_system(struct Main *bmain, struct Scene *scene, struct Object *ob, const struct ParticleSystem *psys_orig)
General operations for point clouds.
void BKE_pointcloud_data_update(struct Depsgraph *depsgraph, struct Scene *scene, struct Object *object)
void BKE_reportf(ReportList *reports, eReportType type, const char *format,...) ATTR_PRINTF_FORMAT(3
void BKE_report(ReportList *reports, eReportType type, const char *message)
struct SoftBody * sbNew(void)
void sbFree(struct Object *ob)
void BKE_volume_data_update(struct Depsgraph *depsgraph, struct Scene *scene, struct Object *object)
#define BLI_assert_unreachable()
#define BLI_BITMAP_NEW(_num, _alloc_string)
#define BLI_BITMAP_TEST(_bitmap, _index)
#define BLI_BITMAP_ENABLE(_bitmap, _index)
GSet * BLI_gset_ptr_new(const char *info)
void BLI_gset_free(GSet *gs, GSetKeyFreeFP keyfreefp)
bool BLI_gset_add(GSet *gs, void *key)
void BLI_kdtree_nd_() free(KDTree *tree)
BLI_INLINE bool BLI_listbase_is_empty(const struct ListBase *lb)
#define LISTBASE_FOREACH(type, var, list)
void BLI_insertlinkafter(struct ListBase *listbase, void *vprevlink, void *vnewlink) 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_insertlinkbefore(struct ListBase *listbase, void *vnextlink, void *vnewlink) ATTR_NONNULL(1)
int BLI_listbase_count(const struct ListBase *listbase) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1)
void BLI_listbase_swaplinks(struct ListBase *listbase, void *vlinka, void *vlinkb) ATTR_NONNULL(1
MINLINE void copy_v3_v3(float r[3], const float a[3])
void BLI_path_rel(char *file, const char *relfile) ATTR_NONNULL()
char * BLI_strdup(const char *str) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL() ATTR_MALLOC
size_t BLI_snprintf(char *__restrict dst, size_t maxncpy, const char *__restrict format,...) ATTR_NONNULL(1
char * BLI_strncpy_utf8(char *__restrict dst, const char *__restrict src, size_t maxncpy) ATTR_NONNULL(1
struct Depsgraph Depsgraph
void DEG_id_tag_update(struct ID *id, int flag)
void DEG_relations_tag_update(struct Main *bmain)
struct Main * DEG_get_bmain(const Depsgraph *graph)
struct ViewLayer * DEG_get_input_view_layer(const Depsgraph *graph)
struct Object * DEG_get_evaluated_object(const struct Depsgraph *depsgraph, struct Object *object)
struct Scene * DEG_get_evaluated_scene(const struct Depsgraph *graph)
@ ID_RECALC_COPY_ON_WRITE
#define ID_REAL_USERS(id)
#define ID_IS_OVERRIDE_LIBRARY(_id)
@ eModifierFlag_OverrideLibrary_Local
@ MOD_LAPLACIANDEFORM_BIND
@ eModifierType_ParticleSystem
@ eModifierType_MeshDeform
@ eModifierType_LaplacianDeform
@ eModifierType_SurfaceDeform
@ eModifierType_CorrectiveSmooth
@ eModifierType_Collision
#define OBACT(_view_layer)
void ED_vgroup_vert_add(struct Object *ob, struct bDeformGroup *dg, int vertnum, float weight, int assignmode)
void ED_object_single_obdata_user(struct Main *bmain, struct Scene *scene, struct Object *ob)
struct Object * ED_object_active_context(const struct bContext *C)
bool ED_operator_object_active_editable(struct bContext *C)
bool ED_operator_object_active(struct bContext *C)
void ED_sculpt_undo_push_multires_mesh_begin(struct bContext *C, const char *str)
void ED_sculpt_undo_push_multires_mesh_end(struct bContext *C, const char *str)
_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
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 curves
struct PointerRNA * UI_region_panel_custom_data_under_cursor(const struct bContext *C, const struct wmEvent *event)
@ WM_JOB_TYPE_OBJECT_SIM_OCEAN
EditBone * ED_armature_ebone_add(bArmature *arm, const char *name)
void ED_armature_edit_free(struct bArmature *arm)
void ED_armature_from_edit(Main *bmain, bArmature *arm)
#define BM_ELEM_CD_GET_VOID_P(ele, offset)
#define BM_elem_flag_test(ele, hflag)
void BM_data_layer_free(BMesh *bm, CustomData *data, int type)
#define BM_ITER_ELEM(ele, iter, data, itype)
#define BM_ITER_MESH(ele, iter, bm, itype)
ATTR_WARN_UNUSED_RESULT BMesh * bm
BLI_INLINE BMVert * BM_edge_other_vert(BMEdge *e, const BMVert *v) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL()
ATTR_WARN_UNUSED_RESULT const BMVert * v2
ATTR_WARN_UNUSED_RESULT const BMVert const BMEdge * e
ATTR_WARN_UNUSED_RESULT const BMVert * v
MutableAttributeAccessor attributes_for_write()
static CurvesGeometry & wrap(::CurvesGeometry &dna_struct)
const Depsgraph * depsgraph
Set< ComponentNode * > visited
DEGForeachIDComponentCallback callback
static const char * modifier_name[LS_MODIFIER_NUM]
void(* MEM_freeN)(void *vmemh)
void *(* MEM_dupallocN)(const void *vmemh)
void *(* MEM_mallocN)(size_t len, const char *str)
void ED_mesh_deform_bind_callback(Object *object, MeshDeformModifierData *mmd, Mesh *cagemesh, float *vertexcos, int verts_num, float cagemat[4][4])
MutableAttributeAccessor mesh_attributes_for_write(Mesh &mesh)
static int laplaciandeform_bind_invoke(bContext *C, wmOperator *op, const wmEvent *UNUSED(event))
static Mesh * modifier_apply_create_mesh_for_modifier(Depsgraph *depsgraph, Object *object, ModifierData *md_eval, bool use_virtual_modifiers, bool build_shapekey_layers)
void OBJECT_OT_multires_higher_levels_delete(wmOperatorType *ot)
static int modifier_convert_exec(bContext *C, wmOperator *op)
void OBJECT_OT_modifier_move_to_index(wmOperatorType *ot)
void OBJECT_OT_multires_unsubdivide(wmOperatorType *ot)
static int multires_external_save_invoke(bContext *C, wmOperator *op, const wmEvent *UNUSED(event))
void OBJECT_OT_skin_armature_create(wmOperatorType *ot)
static int modifier_remove_exec(bContext *C, wmOperator *op)
static int ocean_bake_exec(bContext *C, wmOperator *op)
static int multires_unsubdivide_invoke(bContext *C, wmOperator *op, const wmEvent *UNUSED(event))
static int meshdeform_bind_exec(bContext *C, wmOperator *op)
void OBJECT_OT_modifier_set_active(wmOperatorType *ot)
bool ED_object_multires_update_totlevels_cb(Object *ob, void *totlevel_v)
void OBJECT_OT_ocean_bake(wmOperatorType *ot)
void OBJECT_OT_multires_rebuild_subdiv(wmOperatorType *ot)
static int correctivesmooth_bind_exec(bContext *C, wmOperator *op)
static int modifier_add_exec(bContext *C, wmOperator *op)
void OBJECT_OT_modifier_remove(wmOperatorType *ot)
void OBJECT_OT_modifier_convert(wmOperatorType *ot)
bool ED_object_modifier_copy(ReportList *UNUSED(reports), Main *bmain, Scene *scene, Object *ob, ModifierData *md)
static int modifier_remove_invoke(bContext *C, wmOperator *op, const wmEvent *event)
static void oceanbake_startjob(void *customdata, short *stop, short *do_update, float *progress)
static bool modifier_apply_obdata(ReportList *reports, Depsgraph *depsgraph, Scene *scene, Object *ob, ModifierData *md_eval)
static int multires_base_apply_exec(bContext *C, wmOperator *op)
void OBJECT_OT_meshdeform_bind(wmOperatorType *ot)
void OBJECT_OT_explode_refresh(wmOperatorType *ot)
static int modifier_apply_as_shapekey_exec(bContext *C, wmOperator *op)
static bool modifier_apply_shape(Main *bmain, ReportList *reports, Depsgraph *depsgraph, Scene *scene, Object *ob, ModifierData *md_eval)
static int multires_higher_levels_delete_exec(bContext *C, wmOperator *op)
static bool modifier_apply_as_shapekey_poll(bContext *C)
void OBJECT_OT_skin_loose_mark_clear(wmOperatorType *ot)
static int modifier_set_active_exec(bContext *C, wmOperator *op)
static int multires_subdivide_exec(bContext *C, wmOperator *op)
static int multires_rebuild_subdiv_invoke(bContext *C, wmOperator *op, const wmEvent *UNUSED(event))
static EnumPropertyItem prop_multires_subdivide_mode_type[]
void OBJECT_OT_multires_base_apply(wmOperatorType *ot)
void OBJECT_OT_modifier_move_up(wmOperatorType *ot)
static int modifier_move_up_exec(bContext *C, wmOperator *op)
static bool object_modifier_safe_to_delete(Main *bmain, Object *ob, ModifierData *exclude, ModifierType type)
void ED_object_modifier_clear(Main *bmain, Scene *scene, Object *ob)
void OBJECT_OT_modifier_copy(wmOperatorType *ot)
ModifierData * edit_modifier_property_get(wmOperator *op, Object *ob, int type)
static int meshdeform_bind_invoke(bContext *C, wmOperator *op, const wmEvent *UNUSED(event))
static bool object_modifier_remove(Main *bmain, Scene *scene, Object *ob, ModifierData *md, bool *r_sort_depsgraph)
bool ED_object_iter_other(Main *bmain, Object *orig_ob, const bool include_orig, bool(*callback)(Object *ob, void *callback_data), void *callback_data)
void OBJECT_OT_geometry_nodes_input_attribute_toggle(wmOperatorType *ot)
void OBJECT_OT_skin_root_mark(wmOperatorType *ot)
void OBJECT_OT_laplaciandeform_bind(wmOperatorType *ot)
void OBJECT_OT_multires_external_pack(wmOperatorType *ot)
static bool multires_poll(bContext *C)
static int ocean_bake_invoke(bContext *C, wmOperator *op, const wmEvent *UNUSED(event))
static int modifier_set_active_invoke(bContext *C, wmOperator *op, const wmEvent *event)
static int modifier_move_up_invoke(bContext *C, wmOperator *op, const wmEvent *event)
void OBJECT_OT_modifier_apply_as_shapekey(wmOperatorType *ot)
static int modifier_apply_exec_ex(bContext *C, wmOperator *op, int apply_as, bool keep_modifier)
static int multires_rebuild_subdiv_exec(bContext *C, wmOperator *op)
static int multires_reshape_invoke(bContext *C, wmOperator *op, const wmEvent *UNUSED(event))
void edit_modifier_properties(wmOperatorType *ot)
static int explode_refresh_exec(bContext *C, wmOperator *op)
static int skin_armature_create_invoke(bContext *C, wmOperator *op, const wmEvent *UNUSED(event))
static int modifier_apply_exec(bContext *C, wmOperator *op)
void OBJECT_OT_modifier_apply(wmOperatorType *ot)
static Object * modifier_skin_armature_create(Depsgraph *depsgraph, Main *bmain, Object *skin_ob)
static int multires_base_apply_invoke(bContext *C, wmOperator *op, const wmEvent *UNUSED(event))
static bool explode_poll(bContext *C)
static void edit_modifier_report_property(wmOperatorType *ot)
static int multires_subdivide_invoke(bContext *C, wmOperator *op, const wmEvent *UNUSED(event))
static bool surfacedeform_bind_poll(bContext *C)
void OBJECT_OT_multires_reshape(wmOperatorType *ot)
void OBJECT_OT_modifier_copy_to_selected(wmOperatorType *ot)
static int oceanbake_breakjob(void *UNUSED(customdata))
void OBJECT_OT_skin_radii_equalize(wmOperatorType *ot)
static bool ocean_bake_poll(bContext *C)
static int geometry_nodes_input_attribute_toggle_exec(bContext *C, wmOperator *op)
static int skin_loose_mark_clear_exec(bContext *C, wmOperator *op)
static bool laplaciandeform_poll(bContext *C)
static int modifier_move_to_index_invoke(bContext *C, wmOperator *op, const wmEvent *event)
static int modifier_convert_invoke(bContext *C, wmOperator *op, const wmEvent *UNUSED(event))
void ED_object_modifier_link(bContext *C, Object *ob_dst, Object *ob_src)
bool ED_object_modifier_apply(Main *bmain, ReportList *reports, Depsgraph *depsgraph, Scene *scene, Object *ob, ModifierData *md, int mode, bool keep_modifier)
static int skin_armature_create_exec(bContext *C, wmOperator *op)
static int surfacedeform_bind_exec(bContext *C, wmOperator *op)
static bool skin_poll(bContext *C)
static int geometry_node_tree_copy_assign_exec(bContext *C, wmOperator *UNUSED(op))
bool ED_object_modifier_move_to_index(ReportList *reports, Object *ob, ModifierData *md, const int index)
static bool skin_edit_poll(bContext *C)
static int skin_radii_equalize_exec(bContext *C, wmOperator *UNUSED(op))
static bool correctivesmooth_poll(bContext *C)
static int skin_root_mark_exec(bContext *C, wmOperator *UNUSED(op))
static int explode_refresh_invoke(bContext *C, wmOperator *op, const wmEvent *UNUSED(event))
void OBJECT_OT_geometry_node_tree_copy_assign(wmOperatorType *ot)
static bool edit_modifier_invoke_properties_with_hover(bContext *C, wmOperator *op, const wmEvent *event, int *r_retval)
bool ED_object_modifier_move_down(ReportList *reports, Object *ob, ModifierData *md)
static int multires_external_pack_exec(bContext *C, wmOperator *UNUSED(op))
static bool modifier_apply_poll(bContext *C)
static int modifier_apply_as_shapekey_invoke(bContext *C, wmOperator *op, const wmEvent *event)
static int modifier_copy_invoke(bContext *C, wmOperator *op, const wmEvent *event)
void OBJECT_OT_modifier_move_down(wmOperatorType *ot)
static bool object_has_modifier(const Object *ob, const ModifierData *exclude, ModifierType type)
static void oceanbake_endjob(void *customdata)
static int multires_reshape_exec(bContext *C, wmOperator *op)
static bool object_has_modifier_cb(Object *ob, void *data)
bool ED_object_modifier_convert_psys_to_mesh(ReportList *UNUSED(reports), Main *bmain, Depsgraph *depsgraph, ViewLayer *view_layer, Object *ob, ModifierData *md)
bool edit_modifier_invoke_properties(bContext *C, wmOperator *op)
static int multires_unsubdivide_exec(bContext *C, wmOperator *op)
void OBJECT_OT_correctivesmooth_bind(wmOperatorType *ot)
void OBJECT_OT_modifier_add(wmOperatorType *ot)
static const EnumPropertyItem * modifier_add_itemf(bContext *C, PointerRNA *UNUSED(ptr), PropertyRNA *UNUSED(prop), bool *r_free)
static void object_force_modifier_bind_simple_options(Depsgraph *depsgraph, Object *object, ModifierData *md)
bool ED_object_modifier_remove(ReportList *reports, Main *bmain, Scene *scene, Object *ob, ModifierData *md)
static int multires_higher_levels_delete_invoke(bContext *C, wmOperator *op, const wmEvent *UNUSED(event))
static void oceanbake_free(void *customdata)
bool edit_modifier_poll_generic(bContext *C, StructRNA *rna_type, int obtype_flag, const bool is_editmode_allowed, const bool is_liboverride_allowed)
static int modifier_copy_to_selected_invoke(bContext *C, wmOperator *op, const wmEvent *event)
static bool modifier_copy_to_selected_poll(bContext *C)
static int multires_external_save_exec(bContext *C, wmOperator *op)
static int modifier_move_to_index_exec(bContext *C, wmOperator *op)
static void object_force_modifier_update_for_bind(Depsgraph *depsgraph, Object *ob)
static int modifier_apply_invoke(bContext *C, wmOperator *op, const wmEvent *event)
static int modifier_move_down_invoke(bContext *C, wmOperator *op, const wmEvent *event)
static int correctivesmooth_bind_invoke(bContext *C, wmOperator *op, const wmEvent *UNUSED(event))
static int modifier_copy_to_selected_exec(bContext *C, wmOperator *op)
void ED_object_modifier_copy_to_object(bContext *C, Object *ob_dst, Object *ob_src, ModifierData *md)
void OBJECT_OT_multires_subdivide(wmOperatorType *ot)
static int surfacedeform_bind_invoke(bContext *C, wmOperator *op, const wmEvent *UNUSED(event))
static bool meshdeform_poll(bContext *C)
static bool edit_modifier_poll(bContext *C)
void OBJECT_OT_surfacedeform_bind(wmOperatorType *ot)
static int laplaciandeform_bind_exec(bContext *C, wmOperator *op)
static void skin_root_clear(BMVert *bm_vert, GSet *visited, const int cd_vert_skin_offset)
static void skin_armature_bone_create(Object *skin_ob, MVert *mvert, MEdge *medge, bArmature *arm, BLI_bitmap *edges_visited, const MeshElemMap *emap, EditBone *parent_bone, int parent_v)
static void oceanbake_update(void *customdata, float progress, int *cancel)
static int modifier_copy_exec(bContext *C, wmOperator *op)
static bool edit_modifier_liboverride_allowed_poll(bContext *C)
ModifierData * ED_object_modifier_add(ReportList *reports, Main *bmain, Scene *scene, Object *ob, const char *name, int type)
bool ED_object_modifier_move_up(ReportList *reports, Object *ob, ModifierData *md)
void OBJECT_OT_multires_external_save(wmOperatorType *ot)
static void modifier_skin_customdata_delete(struct Object *ob)
static int modifier_move_down_exec(bContext *C, wmOperator *op)
static char * modifier_apply_as_shapekey_get_description(struct bContext *UNUSED(C), struct wmOperatorType *UNUSED(op), struct PointerRNA *values)
bool RNA_struct_is_a(const StructRNA *type, const StructRNA *srna)
void RNA_pointer_create(ID *id, StructRNA *type, void *data, PointerRNA *r_ptr)
void RNA_string_set(PointerRNA *ptr, const char *name, const char *value)
bool RNA_property_is_set(PointerRNA *ptr, PropertyRNA *prop)
void RNA_int_set(PointerRNA *ptr, const char *name, int value)
PropertyRNA * RNA_struct_find_property(PointerRNA *ptr, const char *identifier)
bool RNA_property_boolean_get(PointerRNA *ptr, PropertyRNA *prop)
void RNA_string_get(PointerRNA *ptr, const char *name, char *value)
int RNA_int_get(PointerRNA *ptr, const char *name)
void RNA_property_boolean_set(PointerRNA *ptr, PropertyRNA *prop, bool value)
bool RNA_pointer_is_null(const PointerRNA *ptr)
bool RNA_struct_property_is_set(PointerRNA *ptr, const char *identifier)
bool RNA_boolean_get(PointerRNA *ptr, const char *name)
int RNA_enum_get(PointerRNA *ptr, const char *name)
PropertyRNA * RNA_def_boolean(StructOrFunctionRNA *cont_, const char *identifier, bool default_value, const char *ui_name, const char *ui_description)
void RNA_enum_item_end(EnumPropertyItem **items, int *totitem)
void RNA_enum_item_add(EnumPropertyItem **items, int *totitem, const EnumPropertyItem *item)
PropertyRNA * RNA_def_string(StructOrFunctionRNA *cont_, const char *identifier, const char *default_value, int maxlen, const char *ui_name, const char *ui_description)
void RNA_def_property_flag(PropertyRNA *prop, PropertyFlag flag)
PropertyRNA * RNA_def_int(StructOrFunctionRNA *cont_, const char *identifier, int default_value, int hardmin, int hardmax, const char *ui_name, const char *ui_description, int softmin, int softmax)
void RNA_def_enum_funcs(PropertyRNA *prop, EnumPropertyItemFunc itemfunc)
PropertyRNA * RNA_def_enum(StructOrFunctionRNA *cont_, const char *identifier, const EnumPropertyItem *items, int default_value, const char *ui_name, const char *ui_description)
const EnumPropertyItem rna_enum_object_modifier_type_items[]
unsigned int bind_coords_num
CorrectiveSmoothDeltaCache delta_cache
GeometryComponent & get_component_for_write(GeometryComponentType component_type)
Curves * get_curves_for_write()
struct BMEditMesh * edit_mesh
struct ModifierData * next
struct ModifierData * prev
bool(* isDisabled)(const struct Scene *scene, struct ModifierData *md, bool userRenderParams)
void(* modifyGeometrySet)(struct ModifierData *md, const struct ModifierEvalContext *ctx, struct GeometrySet *geometry_set)
void(* deformVerts)(struct ModifierData *md, const struct ModifierEvalContext *ctx, struct Mesh *mesh, float(*vertexCos)[3], int numVerts)
struct bNodeTree * node_group
struct OceanModifierData * omd
struct OceanCache * oceancache
struct ParticleCacheKey ** childcache
struct ParticleCacheKey ** pathcache
int(* invoke)(struct bContext *, struct wmOperator *, const struct wmEvent *) ATTR_WARN_UNUSED_RESULT
char *(* get_description)(struct bContext *C, struct wmOperatorType *, struct PointerRNA *)
bool(* poll)(struct bContext *) ATTR_WARN_UNUSED_RESULT
int(* exec)(struct bContext *, struct wmOperator *) ATTR_WARN_UNUSED_RESULT
struct ReportList * reports
struct wmOperatorType * type
ccl_device_inline int mod(int x, int m)
void WM_main_add_notifier(unsigned int type, void *reference)
void WM_event_add_fileselect(bContext *C, wmOperator *op)
void WM_event_add_notifier(const bContext *C, uint type, void *reference)
void WM_jobs_start(wmWindowManager *wm, wmJob *wm_job)
void WM_jobs_callbacks(wmJob *wm_job, wm_jobs_start_callback startjob, void(*initjob)(void *), void(*update)(void *), void(*endjob)(void *))
void WM_jobs_customdata_set(wmJob *wm_job, void *customdata, void(*free)(void *))
void WM_jobs_timer(wmJob *wm_job, double timestep, unsigned int note, unsigned int endnote)
wmJob * WM_jobs_get(wmWindowManager *wm, wmWindow *win, const void *owner, const char *name, int flag, int job_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)
int WM_operator_confirm_message(bContext *C, wmOperator *op, const char *message)
int WM_menu_invoke(bContext *C, wmOperator *op, const wmEvent *UNUSED(event))