11 #define DNA_DEPRECATED_ALLOW
124 strcat(r_idname, mti->
name);
227 if (modifiers && md) {
271 if (md->type ==
type) {
348 const char *md_src_data = ((
const char *)md_src) + data_size;
349 char *md_dst_data = ((
char *)md_dst) + data_size;
351 memcpy(md_dst_data, md_src_data, (
size_t)mti->
structSize - data_size);
438 va_start(ap, _format);
468 va_start(ap, _format);
495 int *r_lastPossibleCageIndex,
503 if (r_lastPossibleCageIndex) {
505 *r_lastPossibleCageIndex = -1;
510 for (
int i = 0; md; i++, md = md->
next) {
512 bool supports_mapping;
525 if (r_lastPossibleCageIndex && supports_mapping) {
526 *r_lastPossibleCageIndex = i;
536 if (!supports_mapping) {
580 if ((md->
mode & required_mode) != required_mode) {
614 bool have_deform_modifier =
false;
617 for (; md; md = md->
next) {
624 have_deform_modifier =
true;
631 if (previewmd == md && previewmask !=
NULL) {
636 if (!have_deform_modifier) {
643 curr->
next = dataMasks;
647 if (!have_deform_modifier) {
683 for (; md; md = md->
next) {
740 ob, &gpencilvirtualModifierData);
743 for (; gmd; gmd = gmd->
next) {
762 for (; md; md = md->
next) {
786 for (; md; md = md->
next) {
809 for (; md; md = md->
next) {
832 for (; md; md = md->
next) {
854 for (; md; md = md->
next) {
870 for (; md; md = md->
next) {
897 for (; md; md = md->
next) {
1012 float (*vertexCos)[3],
1019 mti->
deformVerts(md, ctx, me, vertexCos, numVerts);
1026 float (*vertexCos)[3],
1068 if (object_eval ==
object) {
1082 printf(
"Modifier %s -> %s does not have UUID generated.\n", object->
id.
name + 2, md->
name);
1087 printf(
"Modifier %s -> %s has duplicate UUID generated.\n", object->
id.
name + 2, md->
name);
1099 if (modbase ==
NULL) {
1234 reader, old_fluidsim_modifier_data->
fss);
1235 switch (old_fluidsim_settings->
type) {
1280 else if (old_modifier_data->
type == eModifierType_Smoke) {
1296 new_modifier_data->
next = old_modifier_data->
next;
1297 new_modifier_data->
prev = old_modifier_data->
prev;
1298 if (new_modifier_data->
prev !=
NULL) {
1299 new_modifier_data->
prev->
next = new_modifier_data;
1301 if (new_modifier_data->
next !=
NULL) {
1302 new_modifier_data->
next->
prev = new_modifier_data;
1304 if (modifiers->
first == old_modifier_data) {
1305 modifiers->
first = new_modifier_data;
1307 if (modifiers->
last == old_modifier_data) {
1308 modifiers->
last = new_modifier_data;
1314 return new_modifier_data;
1329 bool is_allocated =
false;
1335 TIP_(
"Possible data loss when saving this file! %s modifier is deprecated (Object: %s)"),
1339 is_allocated =
true;
1341 else if (md->
type == eModifierType_Smoke) {
1345 TIP_(
"Possible data loss when saving this file! %s modifier is deprecated (Object: %s)"),
1349 is_allocated =
true;
1431 "High resolution manta cache not available due to pointcache update. Please "
1432 "reset the simulation.\n");
void CustomData_MeshMasks_update(CustomData_MeshMasks *mask_dst, const CustomData_MeshMasks *mask_src)
BMEditMesh * BKE_editmesh_from_object(struct Object *ob)
Return the BMEditMesh for a given object.
void BKE_editmesh_cache_ensure_vert_normals(struct BMEditMesh *em, struct EditMeshData *emd)
struct EffectorWeights * BKE_effector_add_weights(struct Collection *collection)
void BKE_fluid_flow_behavior_set(struct Object *object, struct FluidFlowSettings *settings, int behavior)
void BKE_fluid_effector_type_set(struct Object *object, struct FluidEffectorSettings *settings, int type)
void BKE_fluid_domain_type_set(struct Object *object, struct FluidDomainSettings *settings, int type)
void BKE_fluid_modifier_create_type_data(struct FluidModifierData *fmd)
void BKE_fluid_flow_type_set(struct Object *object, struct FluidFlowSettings *settings, int type)
void BKE_fluid_modifier_free(struct FluidModifierData *fmd)
struct GpencilModifierData * BKE_gpencil_modifiers_get_virtual_modifierlist(const struct Object *ob, struct GpencilVirtualModifierData *data)
struct Key * BKE_key_from_object(struct Object *ob)
@ LIB_ID_CREATE_NO_USER_REFCOUNT
void id_us_min(struct ID *id)
void id_us_plus(struct ID *id)
const char * BKE_main_blendfile_path_from_global(void)
void BKE_mesh_wrapper_ensure_mdata(struct Mesh *me)
#define MODIFIER_TYPE_PANEL_PREFIX
void(* IDWalkFunc)(void *userData, struct Object *ob, struct ID **idpoin, int cb_flag)
@ eModifierTypeFlag_AcceptsBMesh
@ eModifierTypeFlag_SupportsMapping
@ eModifierTypeFlag_UsesPreview
@ eModifierTypeFlag_EnableInEditmode
@ eModifierTypeFlag_SupportsEditmode
void(* TexWalkFunc)(void *userData, struct Object *ob, struct ModifierData *md, const char *propname)
@ eModifierTypeType_OnlyDeform
@ eModifierTypeType_NonGeometrical
@ eModifierTypeType_Constructive
void multiresModifier_set_levels_from_disps(struct MultiresModifierData *mmd, struct Object *ob)
General operations, lookup, etc. for blender objects.
void BKE_object_modifiers_lib_link_common(void *userData, struct Object *ob, struct ID **idpoin, int cb_flag)
struct Mesh * BKE_object_get_editmesh_eval_final(const struct Object *object)
struct Mesh * BKE_object_get_evaluated_mesh(const struct Object *object)
void BKE_object_modifier_set_active(struct Object *ob, struct ModifierData *md)
void BKE_ptcache_blend_read_data(struct BlendDataReader *reader, struct ListBase *ptcaches, struct PointCache **ocache, int force_disk)
struct PointCache * BKE_ptcache_add(struct ListBase *ptcaches)
void BKE_ptcache_free_list(struct ListBase *ptcaches)
void BKE_ptcache_free(struct PointCache *cache)
void BKE_ptcache_blend_write(struct BlendWriter *writer, struct ListBase *ptcaches)
GSet * BLI_gset_new(GSetHashFP hashfp, GSetCmpFP cmpfp, const char *info) ATTR_MALLOC ATTR_WARN_UNUSED_RESULT
void * BLI_gset_lookup(const GSet *gs, const void *key) ATTR_WARN_UNUSED_RESULT
void BLI_gset_insert(GSet *gs, void *key)
void BLI_gset_free(GSet *gs, GSetKeyFreeFP keyfreefp)
void BLI_linklist_reverse(LinkNode **listp) ATTR_NONNULL(1)
#define LISTBASE_FOREACH(type, var, list)
BLI_INLINE void BLI_listbase_clear(struct ListBase *lb)
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_findstring(const struct ListBase *listbase, const char *id, int offset) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1)
void BLI_join_dirfile(char *__restrict dst, size_t maxlen, const char *__restrict dir, const char *__restrict file) ATTR_NONNULL()
bool BLI_session_uuid_ghash_compare(const void *lhs_v, const void *rhs_v)
SessionUUID BLI_session_uuid_generate(void)
uint BLI_session_uuid_ghash_hash(const void *uuid_v)
bool BLI_session_uuid_is_equal(const SessionUUID *lhs, const SessionUUID *rhs)
bool BLI_session_uuid_is_generated(const SessionUUID *uuid)
char * BLI_strdup(const char *str) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL() ATTR_MALLOC
char * BLI_strncpy(char *__restrict dst, const char *__restrict src, size_t maxncpy) ATTR_NONNULL()
bool BLI_uniquename(struct ListBase *list, void *vlink, const char *defname, char delim, int name_offset, size_t name_len)
ThreadRWMutex * BLI_rw_mutex_alloc(void)
#define UNUSED_VARS_NDEBUG(...)
#define BLO_read_data_address(reader, ptr_p)
void BLO_write_struct_by_name(BlendWriter *writer, const char *struct_name, const void *data_ptr)
#define BLO_write_struct(writer, struct_name, data_ptr)
void BLO_read_list(BlendDataReader *reader, struct ListBase *list)
void * BLO_read_get_new_data_address(BlendDataReader *reader, const void *old_address)
struct BlendFileReadReport * BLO_read_data_reports(BlendDataReader *reader)
void BLO_reportf_wrap(struct BlendFileReadReport *reports, eReportType type, const char *format,...) ATTR_PRINTF_FORMAT(3
#define CLOG_ERROR(clg_ref,...)
struct Depsgraph Depsgraph
struct Object * DEG_get_original_object(struct Object *object)
struct Object * DEG_get_evaluated_object(const struct Depsgraph *depsgraph, struct Object *object)
#define ID_IS_LINKED(_id)
#define ID_BLEND_PATH(_bmain, _id)
#define ID_IS_OVERRIDE_LIBRARY(_id)
@ FLUID_DOMAIN_TYPE_LIQUID
@ FLUID_FLOW_BEHAVIOR_OUTFLOW
@ FLUID_FLOW_BEHAVIOR_INFLOW
@ FLUID_EFFECTOR_TYPE_GUIDE
@ FLUID_EFFECTOR_TYPE_COLLISION
@ eGpencilModifierType_Armature
@ eModifierFlag_OverrideLibrary_Local
@ eModifierMode_DisableTemporary
struct ModifierData ModifierData
@ eModifierType_ParticleSystem
@ eModifierType_MeshDeform
@ eModifierType_Collision
@ eModifierType_DynamicPaint
#define OB_FLUIDSIM_OUTFLOW
#define OB_FLUIDSIM_INFLOW
#define OB_FLUIDSIM_PARTICLE
#define OB_FLUIDSIM_ENABLE
#define OB_FLUIDSIM_CONTROL
#define OB_FLUIDSIM_DOMAIN
#define OB_FLUIDSIM_FLUID
#define OB_FLUIDSIM_OBSTACLE
Object is a sort of wrapper for general info.
@ UI_PANEL_DATA_EXPAND_ROOT
_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.
void modifier_type_init(ModifierTypeInfo *types[])
bool BKE_modifier_depends_ontime(Scene *scene, ModifierData *md)
void BKE_modifier_panel_expand(ModifierData *md)
bool BKE_modifiers_is_modifier_enabled(Object *ob, int modifierType)
Object * BKE_modifiers_is_deformed_by_meshdeform(Object *ob)
bool BKE_modifier_is_non_geometrical(ModifierData *md)
void BKE_modifier_path_init(char *path, int path_maxlen, const char *name)
ModifierData * BKE_modifiers_get_virtual_modifierlist(const Object *ob, VirtualModifierData *virtualModifierData)
static void modifier_ensure_type(FluidModifierData *fluid_modifier_data, int type)
void BKE_modifier_check_uuids_unique_and_report(const Object *object)
const ModifierTypeInfo * BKE_modifier_get_info(ModifierType type)
void BKE_modifiers_clear_errors(Object *ob)
void BKE_modifier_blend_write(BlendWriter *writer, const ID *id_owner, ListBase *modbase)
bool BKE_modifiers_is_cloth_enabled(Object *ob)
ModifierData * BKE_modifier_copy_ex(const ModifierData *md, int flag)
Mesh * BKE_modifier_get_evaluated_mesh_from_evaluated_object(Object *ob_eval)
int BKE_modifiers_get_cage_index(const Scene *scene, Object *ob, int *r_lastPossibleCageIndex, bool is_virtual)
bool BKE_modifiers_is_correctable_deformed(const struct Scene *scene, Object *ob)
void BKE_modifier_copydata_ex(const ModifierData *md, ModifierData *target, const int flag)
ModifierData * BKE_modifiers_findby_name(const Object *ob, const char *name)
bool BKE_modifiers_uses_multires(Object *ob)
ModifierData * BKE_modifier_get_original(const Object *object, ModifierData *md)
static void modwrap_dependsOnNormals(Mesh *me)
static ModifierTypeInfo * modifier_types[NUM_MODIFIER_TYPES]
struct ModifierData * BKE_modifier_get_evaluated(Depsgraph *depsgraph, Object *object, ModifierData *md)
void BKE_modifier_deform_vertsEM(ModifierData *md, const ModifierEvalContext *ctx, struct BMEditMesh *em, Mesh *me, float(*vertexCos)[3], int numVerts)
void BKE_modifier_blend_read_data(BlendDataReader *reader, ListBase *lb, Object *ob)
void BKE_modifier_set_error(const Object *ob, ModifierData *md, const char *_format,...)
bool BKE_modifier_supports_cage(struct Scene *scene, ModifierData *md)
bool BKE_modifiers_uses_armature(Object *ob, bArmature *arm)
void BKE_modifier_deform_verts(ModifierData *md, const ModifierEvalContext *ctx, Mesh *me, float(*vertexCos)[3], int numVerts)
Object * BKE_modifiers_is_deformed_by_armature(Object *ob)
const char * BKE_modifier_path_relbase_from_global(Object *ob)
ModifierData * BKE_modifiers_findby_session_uuid(const Object *ob, const SessionUUID *session_uuid)
bool BKE_modifier_supports_mapping(ModifierData *md)
static void modifier_free_data_id_us_cb(void *UNUSED(userData), Object *UNUSED(ob), ID **idpoin, int cb_flag)
bool BKE_modifier_is_enabled(const struct Scene *scene, ModifierData *md, int required_mode)
static ModifierData * modifier_allocate_and_init(int type)
struct Mesh * BKE_modifier_modify_mesh(ModifierData *md, const ModifierEvalContext *ctx, struct Mesh *me)
void BKE_modifier_free_temporary_data(ModifierData *md)
void BKE_modifier_set_warning(const struct Object *ob, struct ModifierData *md, const char *_format,...)
static void modifier_copy_data_id_us_cb(void *UNUSED(userData), Object *UNUSED(ob), ID **idpoin, int cb_flag)
ModifierData * BKE_modifiers_findby_type(const Object *ob, ModifierType type)
bool BKE_modifier_is_same_topology(ModifierData *md)
ModifierData * BKE_modifier_new(int type)
void BKE_modifier_free(ModifierData *md)
CDMaskLink * BKE_modifier_calc_data_masks(const struct Scene *scene, Object *ob, ModifierData *md, CustomData_MeshMasks *final_datamask, int required_mode, ModifierData *previewmd, const CustomData_MeshMasks *previewmask)
bool BKE_modifier_is_nonlocal_in_liboverride(const Object *ob, const ModifierData *md)
void BKE_modifiers_test_object(Object *ob)
void BKE_modifier_remove_from_list(Object *ob, ModifierData *md)
bool BKE_modifiers_is_softbody_enabled(Object *ob)
Object * BKE_modifiers_is_deformed_by_lattice(Object *ob)
Object * BKE_modifiers_is_deformed_by_curve(Object *ob)
bool BKE_modifier_unique_name(ListBase *modifiers, ModifierData *md)
void BKE_modifiers_foreach_tex_link(Object *ob, TexWalkFunc walk, void *userData)
static VirtualModifierData virtualModifierCommonData
void BKE_modifier_blend_read_lib(BlendLibReader *reader, Object *ob)
bool BKE_modifier_is_correctable_deformed(ModifierData *md)
bool BKE_modifiers_is_particle_enabled(Object *ob)
ModifierData * BKE_modifier_get_last_preview(const struct Scene *scene, ModifierData *md, int required_mode)
void BKE_modifier_copydata_generic(const ModifierData *md_src, ModifierData *md_dst, const int UNUSED(flag))
void BKE_modifiers_foreach_ID_link(Object *ob, IDWalkFunc walk, void *userData)
void BKE_modifier_free_ex(ModifierData *md, const int flag)
bool BKE_modifier_is_preview(ModifierData *md)
void BKE_modifier_type_panel_id(ModifierType type, char *r_idname)
static ModifierData * modifier_replace_with_fluid(BlendDataReader *reader, Object *object, ListBase *modifiers, ModifierData *old_modifier_data)
void BKE_modifier_copydata(const ModifierData *md, ModifierData *target)
bool BKE_modifier_couldbe_cage(struct Scene *scene, ModifierData *md)
void BKE_modifier_session_uuid_generate(ModifierData *md)
const char * BKE_modifier_path_relbase(Main *bmain, Object *ob)
void BKE_modifier_init(void)
void BM_mesh_normals_update(BMesh *bm)
const Depsgraph * depsgraph
struct @211::@212 surface
void * BKE_tempdir_session
ccl_global float * buffer
void(* MEM_freeN)(void *vmemh)
void *(* MEM_callocN)(size_t len, const char *str)
SymEdge< T > * prev(const SymEdge< T > *se)
float(* vert_coords_prev)[3]
struct CustomData_MeshMasks mask
struct ClothSolverResult * solver_result
struct ClothHairData * hairdata
struct Cloth * clothObject
struct PointCache * point_cache
struct ClothSimSettings * sim_parms
struct ClothCollSettings * coll_parms
struct EffectorWeights * effector_weights
struct ColorBand * vel_ramp
struct DynamicPaintModifierData * pmd
struct ParticleSystem * psys
struct ColorBand * paint_ramp
struct DynamicPaintModifierData * pmd
struct DynamicPaintCanvasSettings * canvas
struct DynamicPaintBrushSettings * brush
const float(* vertexCos)[3]
struct ListBase ptcaches[2]
struct FluidModifierData * fmd
struct GPUTexture * tex_density
struct GPUTexture * tex_velocity_x
struct GPUTexture * tex_color
struct GPUTexture * tex_wt
struct GPUTexture * tex_velocity_y
struct GPUTexture * tex_field
struct GPUTexture * tex_velocity_z
struct PointCache * point_cache[2]
struct GPUTexture * tex_shadow
struct GPUTexture * tex_coba
struct GPUTexture * tex_flame
struct EffectorWeights * effector_weights
struct GPUTexture * tex_flame_coba
struct FluidModifierData * fmd
struct FluidModifierData * fmd
struct ParticleSystem * psys
struct FluidDomainSettings * domain
struct FluidEffectorSettings * effector
struct FluidFlowSettings * flow
struct FluidsimSettings * fss
struct GpencilModifierData * next
struct EditMeshData * edit_data
struct BMEditMesh * edit_mesh
struct ModifierData * next
struct ModifierData * prev
bool(* isDisabled)(const struct Scene *scene, struct ModifierData *md, bool userRenderParams)
void(* deformVertsEM)(struct ModifierData *md, const struct ModifierEvalContext *ctx, struct BMEditMesh *editData, struct Mesh *mesh, float(*vertexCos)[3], int numVerts)
void(* freeData)(struct ModifierData *md)
struct Mesh *(* modifyMesh)(struct ModifierData *md, const struct ModifierEvalContext *ctx, struct Mesh *mesh)
void(* blendWrite)(struct BlendWriter *writer, const struct ID *id_owner, const struct ModifierData *md)
void(* deformVerts)(struct ModifierData *md, const struct ModifierEvalContext *ctx, struct Mesh *mesh, float(*vertexCos)[3], int numVerts)
void(* foreachTexLink)(struct ModifierData *md, struct Object *ob, TexWalkFunc walk, void *userData)
void(* blendRead)(struct BlendDataReader *reader, struct ModifierData *md)
void(* requiredDataMask)(struct Object *ob, struct ModifierData *md, struct CustomData_MeshMasks *r_cddata_masks)
bool(* dependsOnTime)(struct Scene *scene, struct ModifierData *md)
bool(* dependsOnNormals)(struct ModifierData *md)
void(* foreachIDLink)(struct ModifierData *md, struct Object *ob, IDWalkFunc walk, void *userData)
void(* initData)(struct ModifierData *md)
void(* copyData)(const struct ModifierData *md, struct ModifierData *target, int flag)
void(* deformMatricesEM)(struct ModifierData *md, const struct ModifierEvalContext *ctx, struct BMEditMesh *editData, struct Mesh *mesh, float(*vertexCos)[3], float(*defMats)[3][3], int numVerts)
ccl_device_inline int mod(int x, int m)
#define writestruct(wd, filecode, struct_id, nr, adr)