diff options
55 files changed, 1098 insertions, 345 deletions
diff --git a/source/blender/makesdna/DNA_modifier_defaults.h b/source/blender/makesdna/DNA_modifier_defaults.h new file mode 100644 index 00000000000..400e077e892 --- /dev/null +++ b/source/blender/makesdna/DNA_modifier_defaults.h @@ -0,0 +1,728 @@ +/* + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +/** \file + * \ingroup DNA + */ + +#pragma once + +/* Struct members on own line. */ +/* clang-format off */ + +#define _DNA_DEFAULT_ArmatureModifierData \ + { \ + .deformflag = ARM_DEF_VGROUP, \ + .multi = 0.0f, \ + .object = NULL, \ + .defgrp_name = "", \ + } + +/* Default to 2 duplicates distributed along the x-axis by an offset of 1 object width. */ +#define _DNA_DEFAULT_ArrayModifierData \ + { \ + .start_cap = NULL, \ + .end_cap = NULL, \ + .curve_ob = NULL, \ + .offset_ob = NULL, \ + .offset = {1.0f, 0.0f, 0.0f}, \ + .scale = {1.0f, 0.0f, 0.0f}, \ + .length = 0.0f, \ + .merge_dist = 0.1f, \ + .fit_type = MOD_ARR_FIXEDCOUNT, \ + .offset_type = MOD_ARR_OFF_RELATIVE, \ + .flags = 0, \ + .count = 2, \ + .uv_offset = {0.0f, 0.0f}, \ + } + +#define _DNA_DEFAULT_BevelModifierData \ + { \ + .value = 0.1f, \ + .res = 1, \ + .flags = 0, \ + .val_flags = MOD_BEVEL_AMT_OFFSET, \ + .profile_type = MOD_BEVEL_PROFILE_SUPERELLIPSE, \ + .lim_flags = 0, \ + .e_flags = 0, \ + .mat = -1, \ + .edge_flags = 0, \ + .face_str_mode = MOD_BEVEL_FACE_STRENGTH_NONE, \ + .miter_inner = MOD_BEVEL_MITER_SHARP, \ + .miter_outer = MOD_BEVEL_MITER_SHARP, \ + .affect_type = MOD_BEVEL_AFFECT_EDGES, \ + .profile = 0.5f, \ + .bevel_angle = DEG2RADF(30.0f), \ + .spread = 0.1f, \ + .defgrp_name = "", \ + } + +#define _DNA_DEFAULT_BooleanModifierData \ + { \ + .object = NULL, \ + .collection = NULL, \ + .double_threshold = 1e-6f, \ + .operation = eBooleanModifierOp_Difference, \ + .solver = eBooleanModifierSolver_Exact, \ + .flag = eBooleanModifierFlag_Object, \ + .bm_flag = 0, \ + } + +#define _DNA_DEFAULT_BuildModifierData \ + { \ + .start = 1.0f, \ + .length = 100.0f, \ + .flag = 0, \ + .randomize = 0, \ + .seed = 0, \ + } + +#define _DNA_DEFAULT_CastModifierData \ + { \ + .object = NULL, \ + .fac = 0.5f, \ + .radius = 0.0f, \ + .size = 0.0f, \ + .defgrp_name = "", \ + .flag = MOD_CAST_X | MOD_CAST_Y | MOD_CAST_Z | MOD_CAST_SIZE_FROM_RADIUS, \ + .type = MOD_CAST_TYPE_SPHERE, \ + } + +/* Cloth modifier skipped for now. */ + +#define _DNA_DEFAULT_CollisionModifierData \ + { \ + .x = NULL, \ + .xnew = NULL, \ + .xold = NULL, \ + .current_xnew = NULL, \ + .current_x = NULL, \ + .current_v = NULL, \ + .current_v = NULL, \ + .tri = NULL, \ + .mvert_num = 0, \ + .tri_num = 0, \ + .time_x = -1000.0f, \ + .time_xnew = -1000.0f, \ + .is_static = false, \ + .bvhtree = NULL, \ + } + +#define _DNA_DEFAULT_CorrectiveSmoothModifierData \ + { \ + .bind_coords = NULL, \ + .bind_coords_num = 0, \ + .lambda = 0.5f, \ + .scale = 1.0f, \ + .repeat = 5, \ + .flag = 0, \ + .smooth_type = MOD_CORRECTIVESMOOTH_SMOOTH_SIMPLE, \ + .defgrp_name = "", \ + } + +#define _DNA_DEFAULT_CurveModifierData \ + { \ + .object = NULL, \ + .name = "", \ + .defaxis = MOD_CURVE_POSX, \ + .flag = 0, \ + } + +/* Defines are scattered accross too many files, they need to be moved to DNA. */ +#if 0 +#define _DNA_DEFAULT_DataTransferModifierData \ + { \ + .ob_source = NULL, \ + .data_types = 0, \ + .vmap_mode = MREMAP_MODE_VERT_NEAREST, \ + .emap_mode = MREMAP_MODE_EDGE_NEAREST, \ + .lmap_mode = MREMAP_MODE_LOOP_NEAREST_POLYNOR, \ + .pmap_mode = MREMAP_MODE_POLY_NEAREST, \ + .map_max_distance = 1.0f, \ + .map_ray_radius = 0.0f, \ + .islands_precision = 0.0f, \ + .layers_select_src = {DT_LAYERS_ALL_SRC, DT_LAYERS_ALL_SRC, DT_LAYERS_ALL_SRC, DT_LAYERS_ALL_SRC}, \ + .layers_select_dst = {DT_LAYERS_NAME_DST, DT_LAYERS_NAME_DST, DT_LAYERS_NAME_DST, DT_LAYERS_NAME_DST}, \ + .mix_mod = CDT_MIX_TRANSFER, \ + .mix_factor = 1.0f, \ + .defgrp_name = "", \ + .flags = MOD_DATATRANSFER_OBSRC_TRANSFORM, \ + } +#endif + +#define _DNA_DEFAULT_DecimateModifierData \ + { \ + .percent = 1.0f, \ + .iter = 0, \ + .delimit = 0, \ + .symmetry_axis = 0, \ + .angle = DEG2RADF(5.0f), \ + .defgrp_name = "", \ + .defgrp_factor = 1.0f, \ + .flag = 0, \ + .mode = 0, \ + .face_count = 0, \ + } + +#define _DNA_DEFAULT_DisplaceModifierData \ + { \ + .texture = NULL, \ + .map_object = NULL, \ + .map_bone = "", \ + .uvlayer_name = "", \ + .uvlayer_tmp = 0, \ + .texmapping = 0, \ + .strength = 1.0f, \ + .direction = MOD_DISP_DIR_NOR, \ + .defgrp_name = "", \ + .midlevel = 0.5f, \ + .space = MOD_DISP_SPACE_LOCAL, \ + .flag = 0, \ + } + +#define _DNA_DEFAULT_DynamicPaintModifierData \ + { \ + .canvas = NULL, \ + .brush = NULL, \ + .type = MOD_DYNAMICPAINT_TYPE_CANVAS, \ + } + +/* Default to 30-degree split angle, sharpness from both angle & flag. */ +#define _DNA_DEFAULT_EdgeSplitModifierData \ + { \ + .split_angle = DEG2RADF(30.0f), \ + .flags = MOD_EDGESPLIT_FROMANGLE | MOD_EDGESPLIT_FROMFLAG, \ + } + +#define _DNA_DEFAULT_ExplodeModifierData \ + { \ + .facepa = NULL, \ + .flag = eExplodeFlag_Unborn | eExplodeFlag_Alive | eExplodeFlag_Dead, \ + .vgroup = 0, \ + .protect = 0.0f, \ + .uvname = "", \ + } + +/* Fluid modifier settings skipped for now. */ + +#define _DNA_DEFAULT_HookModifierData \ + { \ + .subtarget = "", \ + .flag = 0, \ + .falloff_type = eHook_Falloff_Smooth, \ + .parentinv = _DNA_DEFAULT_UNIT_M4, \ + .cent = {0.0f, 0.0f, 0.0f}, \ + .falloff = 0.0f, \ + .curfalloff = NULL, \ + .indexar = NULL, \ + .totindex = 0, \ + .force = 1.0f, \ + .name = "", \ + } + +#define _DNA_DEFAULT_LaplacianDeformModifierData \ + { \ + .anchor_grp_name = "", \ + .total_verts = 0, \ + .repeat = 1, \ + .vertexco = NULL, \ + .cache_system = NULL, \ + .flag = 0, \ + } + +#define _DNA_DEFAULT_LaplacianSmoothModifierData \ + { \ + .lambda = 0.01f, \ + .lambda_border = 0.01f, \ + .defgrp_name = "", \ + .flag = MOD_LAPLACIANSMOOTH_X | MOD_LAPLACIANSMOOTH_Y | MOD_LAPLACIANSMOOTH_Z | \ + MOD_LAPLACIANSMOOTH_PRESERVE_VOLUME | MOD_LAPLACIANSMOOTH_NORMALIZED, \ + .repeat = 1, \ + } + +#define _DNA_DEFAULT_LatticeModifierData \ + { \ + .object = NULL, \ + .name = "", \ + .strength = 1.0f, \ + .flag = 0, \ + } + +#define _DNA_DEFAULT_MaskModifierData \ + { \ + .ob_arm = NULL, \ + .vgroup = "", \ + .mode = 0, \ + .flag = 0, \ + .threshold = 0.0f, \ + } + +/* Y and Z forward and up axes, Blender default. */ +#define _DNA_DEFAULT_MeshCacheModifierData \ + { \ + .flag = 0, \ + .type = MOD_MESHCACHE_TYPE_MDD, \ + .time_mode = 0, \ + .play_mode = 0, \ + .forward_axis = 1, \ + .up_axis = 2, \ + .flip_axis = 0, \ + .interp = MOD_MESHCACHE_INTERP_LINEAR, \ + .factor = 1.0f, \ + .deform_mode = 0.0f, \ + .frame_start = 0.0f, \ + .frame_scale = 1.0f, \ + .eval_frame = 0.0f, \ + .eval_time = 0.0f, \ + .eval_factor = 0.0f, \ + .filepath = "", \ + } + +#define _DNA_DEFAULT_MeshDeformModifierData \ + { \ + .object = 0, \ + .defgrp_name = "", \ + .gridsize = 5, \ + .flag = 0, \ + .bindinfluences = NULL, \ + .bindoffsets = NULL, \ + .bindcagecos = NULL, \ + .totvert = 0, \ + .totcagevert = 0, \ + .dyngrid = NULL, \ + .dyninfluences = NULL, \ + .dynverts = NULL, \ + .dyngridsize = 0, \ + .totinfluence = 0, \ + .dyncellmin = {0.0f, 0.0f, 0.0f}, \ + .dyncellwidth = 0.0f, \ + .bindmat = _DNA_DEFAULT_UNIT_M4, \ + .bindweights = NULL, \ + .bindcos = NULL, \ + .bindfunc = NULL, \ + } + +#define _DNA_DEFAULT_MeshSeqCacheModifierData \ + { \ + .cache_file = NULL, \ + .object_path = "", \ + .read_flag = MOD_MESHSEQ_READ_VERT | MOD_MESHSEQ_READ_POLY | MOD_MESHSEQ_READ_UV | MOD_MESHSEQ_READ_COLOR, \ + .velocity_scale = 1.0f, \ + .reader = NULL, \ + .reader_object_path = "", \ + .vertex_velocities = NULL, \ + .num_vertices = 0, \ + .velocity_delta = 0.0f, \ + .last_lookup_time = 0.0f, \ + } + +#define _DNA_DEFAULT_MirrorModifierData \ + { \ + .flag = MOD_MIR_AXIS_X | MOD_MIR_VGROUP, \ + .tolerance = 0.001f, \ + .uv_offset = {0.0f, 0.0f}, \ + .uv_offset_copy = {0.0f, 0.0f}, \ + .mirror_ob = NULL, \ + } + +#define _DNA_DEFAULT_MultiresModifierData \ + { \ + .lvl = 0, \ + .sculptlvl = 0, \ + .renderlvl = 0, \ + .totlvl = 0, \ + .simple = 0, \ + .flags = eMultiresModifierFlag_UseCrease | eMultiresModifierFlag_ControlEdges, \ + .uv_smooth = SUBSURF_UV_SMOOTH_PRESERVE_CORNERS, \ + .quality = 4, \ + .boundary_smooth = SUBSURF_BOUNDARY_SMOOTH_ALL, \ + } + +#define _DNA_DEFAULT_NormalEditModifierData \ + { \ + .defgrp_name = "", \ + .target = NULL, \ + .mode = MOD_NORMALEDIT_MODE_RADIAL, \ + .flag = 0, \ + .mix_mode = MOD_NORMALEDIT_MIX_COPY, \ + .mix_factor = 1.0f, \ + .mix_limit = M_PI, \ + .offset = {0.0f, 0.0f, 0.0f}, \ + } + +/* Some fields are initialized in #initData. */ +#define _DNA_DEFAULT_OceanModifierData \ + { \ + .ocean = NULL, \ + .oceancache = NULL, \ + .resolution = 7, \ + .viewport_resolution = 7, \ + .spatial_size = 50, \ + .wind_velocity = 30.0f, \ + .damp = 0.5f, \ + .smallest_wave = 0.01f, \ + .depth = 200.0f, \ + .wave_alignment = 0.0f, \ + .wave_direction = 0.0f, \ + .wave_scale = 1.0f, \ + .chop_amount = 1.0f, \ + .foam_coverage = 0.0f, \ + .time = 1.0f, \ + .spectrum = MOD_OCEAN_SPECTRUM_PHILLIPS, \ + .fetch_jonswap = 120.0f, \ + .sharpen_peak_jonswap = 0.0f, \ + .bakestart = 1, \ + .bakeend = 250, \ + .cachepath = "", \ + .foamlayername = "", \ + .spraylayername = "", \ + .cached = 0, \ + .geometry_mode = 0, \ + .flag = 0, \ + .repeat_x = 1, \ + .repeat_y = 1, \ + .seed = 0, \ + .size = 1.0f, \ + .foam_fade = 0.98f, \ + } + +#define _DNA_DEFAULT_ParticleInstanceModifierData \ + { \ + .psys = 1, \ + .flag = eParticleInstanceFlag_Parents | eParticleInstanceFlag_Unborn | \ + eParticleInstanceFlag_Alive | eParticleInstanceFlag_Dead, \ + .axis = 2, \ + .space = eParticleInstanceSpace_World, \ + .position = 1.0f, \ + .random_position = 0.0f, \ + .rotation = 0.0f, \ + .random_rotation = 0.0f, \ + .particle_offset = 1.0f, \ + .particle_amount = 0.0f, \ + .index_layer_name = "", \ + .value_layer_name = "", \ + } + +#define _DNA_DEFAULT_ParticleSystemModifierData \ + { \ + .psys = NULL, \ + .mesh_final = NULL, \ + .mesh_original = NULL, \ + .totdmvert = 0, \ + .totdmedge = 0, \ + .totdmface = 0, \ + .flag = 0, \ + } + +#define _DNA_DEFAULT_RemeshModifierData \ + { \ + .threshold = 1.0f, \ + .scale = 0.9f, \ + .hermite_num = 1.0f, \ + .depth = 4, \ + .flag = MOD_REMESH_FLOOD_FILL, \ + .mode = MOD_REMESH_VOXEL, \ + .voxel_size = 0.1f, \ + .adaptivity = 0.0f, \ + } + +#define _DNA_DEFAULT_ScrewModifierData \ + { \ + .ob_axis = NULL, \ + .steps = 16, \ + .render_steps = 16, \ + .iter = 1, \ + .screw_ofs = 0.0f, \ + .angle = 2.0f * M_PI, \ + .merge_dist = 0.01f, \ + .flag = MOD_SCREW_SMOOTH_SHADING, \ + .axis = 2, \ + } + +/* Shape key modifier has no items. */ + +#define _DNA_DEFAULT_ShrinkwrapModifierData \ + { \ + .target = NULL, \ + .auxTarget = NULL, \ + .vgroup_name = "", \ + .keepDist = 0.0f, \ + .shrinkType = MOD_SHRINKWRAP_NEAREST_SURFACE, \ + .shrinkOpts = MOD_SHRINKWRAP_PROJECT_ALLOW_POS_DIR, \ + .shrinkMode = 0, \ + .projLimit = 0.0f, \ + .projAxis = 0, \ + .subsurfLevels = 0, \ + } + +#define _DNA_DEFAULT_SimpleDeformModifierData \ + { \ + .origin = NULL, \ + .vgroup_name = "", \ + .factor = DEG2RADF(45.0f), \ + .limit = {0.0f, 1.0f}, \ + .mode = MOD_SIMPLEDEFORM_MODE_TWIST, \ + .axis = 0, \ + .deform_axis = 0, \ + .flag = 0, \ + } + +#define _DNA_DEFAULT_SimulationModifierData \ + { \ + .simulation = NULL, \ + .data_path = NULL, \ + } + +#define _DNA_DEFAULT_SkinModifierData \ + { \ + .branch_smoothing = 0.0f, \ + .flag = 0, \ + .symmetry_axes = MOD_SKIN_SYMM_X, \ + } + +#define _DNA_DEFAULT_SmoothModifierData \ + { \ + .fac = 0.5f, \ + .repeat = 1, \ + .defgrp_name = "", \ + .flag = MOD_SMOOTH_X | MOD_SMOOTH_Y | MOD_SMOOTH_Z, \ + } + +/* Softbody modifier skipped for now. */ + +#define _DNA_DEFAULT_SolidifyModifierData \ + { \ + .defgrp_name = "", \ + .shell_defgrp_name = "", \ + .rim_defgrp_name = "", \ + .offset = 0.01f, \ + .offset_fac = -1.0f, \ + .offset_fac_vg = 0.0f, \ + .offset_clamp = 0.0f, \ + .mode = MOD_SOLIDIFY_MODE_EXTRUDE, \ + .nonmanifold_offset_mode = MOD_SOLIDIFY_NONMANIFOLD_OFFSET_MODE_CONSTRAINTS, \ + .nonmanifold_boundary_mode = MOD_SOLIDIFY_NONMANIFOLD_BOUNDARY_MODE_NONE, \ + .crease_inner = 0.0f, \ + .crease_outer = 0.0f, \ + .crease_rim = 0.0f, \ + .flag = MOD_SOLIDIFY_RIM, \ + .mat_ofs = 0, \ + .mat_ofs_rim = 0, \ + .merge_tolerance = 0.0001f, \ + .bevel_convex = 0.0f, \ + } + +#define _DNA_DEFAULT_SubsurfModifierData \ + { \ + .subdivType = 0, \ + .levels = 1, \ + .renderLevels = 2, \ + .flags = eSubsurfModifierFlag_UseCrease | eSubsurfModifierFlag_ControlEdges, \ + .uv_smooth = SUBSURF_UV_SMOOTH_PRESERVE_CORNERS, \ + .quality = 3, \ + .boundary_smooth = SUBSURF_BOUNDARY_SMOOTH_ALL, \ + .emCache = NULL, \ + .mCache = NULL, \ + } + +#define _DNA_DEFAULT_SurfaceModifierData \ + { \ + .x = NULL, \ + .v = NULL, \ + .mesh = NULL, \ + .bvhtree = NULL, \ + .cfra = 0, \ + .numverts = 0, \ + } + +#define _DNA_DEFAULT_SurfaceDeformModifierData \ + { \ + .depsgraph = NULL, \ + .target = NULL, \ + .verts = NULL, \ + .falloff = 4.0f, \ + .numverts = 0, \ + .numpoly = 0, \ + .flags = 0, \ + .mat = _DNA_DEFAULT_UNIT_M4, \ + .strength = 1.0f, \ + .defgrp_name = "", \ + } + +#define _DNA_DEFAULT_TriangulateModifierData \ + { \ + .flag = 0, \ + .quad_method = MOD_TRIANGULATE_QUAD_SHORTEDGE, \ + .ngon_method = MOD_TRIANGULATE_NGON_BEAUTY, \ + .min_vertices = 4, \ + } + +#define _DNA_DEFAULT_UVProjectModifierData \ + { \ + .projectors = {NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL}, \ + .num_projectors = 1, \ + .aspectx = 1.0f, \ + .aspecty = 1.0f, \ + .scalex = 1.0f, \ + .scaley = 1.0f, \ + .uvlayer_name = "", \ + .uvlayer_tmp = 0, \ + } + +#define _DNA_DEFAULT_UVWarpModifierData \ + { \ + .axis_u = 0, \ + .axis_v = 1, \ + .flag = 0, \ + .center = {0.5f, 0.5f}, \ + .offset = {0.0f, 0.0f}, \ + .scale = {1.0f, 1.0f}, \ + .rotation = 0.0f, \ + .object_src = NULL, \ + .bone_src = "", \ + .object_dst = NULL, \ + .bone_dst = "", \ + .vgroup_name = "", \ + .uvlayer_name = "", \ + } + +#define _DNA_DEFAULT_WarpModifierData \ + { \ + .texture = NULL, \ + .map_object = NULL, \ + .map_bone = "", \ + .uvlayer_name = "", \ + .uvlayer_tmp = 0, \ + .texmapping = 0, \ + .object_from = NULL, \ + .object_to = NULL, \ + .bone_from = "", \ + .bone_to = "", \ + .curfalloff = NULL, \ + .defgrp_name = "", \ + .strength = 1.0f, \ + .falloff_radius = 1.0f, \ + .flag = 0, \ + .falloff_type = eWarp_Falloff_Smooth, \ + } + +#define _DNA_DEFAULT_WaveModifierData \ + { \ + .texture = NULL, \ + .map_object = NULL, \ + .map_bone = "", \ + .uvlayer_name = "", \ + .uvlayer_tmp = 0, \ + .texmapping = MOD_DISP_MAP_LOCAL, \ + .objectcenter = NULL, \ + .defgrp_name = "", \ + .flag = MOD_WAVE_X | MOD_WAVE_Y | MOD_WAVE_CYCL | MOD_WAVE_NORM_X | MOD_WAVE_NORM_Y | MOD_WAVE_NORM_Z, \ + .startx = 0.0f, \ + .starty = 0.0f, \ + .height = 0.5f, \ + .width = 1.5f, \ + .narrow = 1.5f, \ + .speed = 0.25f, \ + .damp = 10.0f, \ + .falloff = 0.0f, \ + .timeoffs = 0.0f, \ + .lifetime = 0.0f, \ + } + +#define _DNA_DEFAULT_WeightedNormalModifierData \ + { \ + .defgrp_name = "", \ + .mode = MOD_WEIGHTEDNORMAL_MODE_FACE, \ + .flag = 0, \ + .weight = 50, \ + .thresh = 0.01f, \ + } + +#define _DNA_DEFAULT_WeightVGEditModifierData \ + { \ + .defgrp_name = "", \ + .edit_flags = 0, \ + .falloff_type = MOD_WVG_MAPPING_NONE, \ + .default_weight = 0.0f, \ + .cmap_curve = NULL, \ + .add_threshold = 0.01f, \ + .rem_threshold = 0.01f, \ + .mask_constant = 1.0f, \ + .mask_defgrp_name = "", \ + .mask_tex_use_channel = MOD_WVG_MASK_TEX_USE_INT, \ + .mask_texture = NULL, \ + .mask_tex_map_obj = NULL, \ + .mask_tex_map_bone = "", \ + .mask_tex_mapping = MOD_DISP_MAP_LOCAL, \ + .mask_tex_uvlayer_name = "", \ + } + +#define _DNA_DEFAULT_WeightVGMixModifierData \ + { \ + .defgrp_name_a = "", \ + .defgrp_name_b = "", \ + .default_weight_a = 0.0f, \ + .default_weight_b = 0.0f, \ + .mix_mode = MOD_WVG_MIX_SET, \ + .mix_set = MOD_WVG_SET_AND, \ + .mask_constant = 1.0f, \ + .mask_defgrp_name = "", \ + .mask_tex_use_channel = MOD_WVG_MASK_TEX_USE_INT, \ + .mask_texture = NULL, \ + .mask_tex_map_obj = NULL, \ + .mask_tex_map_bone = "", \ + .mask_tex_mapping = MOD_DISP_MAP_LOCAL, \ + .mask_tex_uvlayer_name = "", \ + .flag = 0, \ + } + +#define _DNA_DEFAULT_WeightVGProximityModifierData \ + { \ + .defgrp_name = "", \ + .proximity_mode = MOD_WVG_PROXIMITY_OBJECT, \ + .proximity_flags = MOD_WVG_PROXIMITY_GEOM_VERTS, \ + .proximity_ob_target = NULL, \ + .mask_constant = 1.0f, \ + .mask_defgrp_name = "", \ + .mask_tex_use_channel = MOD_WVG_MASK_TEX_USE_INT, \ + .mask_texture = NULL, \ + .mask_tex_map_obj = NULL, \ + .mask_tex_map_bone = "", \ + .mask_tex_mapping = MOD_DISP_MAP_LOCAL, \ + .mask_tex_uvlayer_name = "", \ + .min_dist = 0.0f, \ + .max_dist = 1.0f, \ + .falloff_type = MOD_WVG_MAPPING_NONE, \ + } + +#define _DNA_DEFAULT_WeldModifierData \ + { \ + .merge_dist = 0.001f, \ + .defgrp_name = "", \ + } + +#define _DNA_DEFAULT_WireframeModifierData \ + { \ + .defgrp_name = "", \ + .offset = 0.02f, \ + .offset_fac = 0.0f, \ + .offset_fac_vg = 0.0f, \ + .crease_weight = 1.0f, \ + .flag = MOD_WIREFRAME_REPLACE | MOD_WIREFRAME_OFS_EVEN, \ + .mat_ofs = 0, \ + } + +/* clang-format off */ diff --git a/source/blender/makesdna/intern/CMakeLists.txt b/source/blender/makesdna/intern/CMakeLists.txt index e902474deb1..ddcebb66965 100644 --- a/source/blender/makesdna/intern/CMakeLists.txt +++ b/source/blender/makesdna/intern/CMakeLists.txt @@ -151,6 +151,7 @@ set(SRC ../DNA_material_defaults.h ../DNA_mesh_defaults.h ../DNA_meta_defaults.h + ../DNA_modifier_types.h ../DNA_object_defaults.h ../DNA_pointcloud_defaults.h ../DNA_scene_defaults.h diff --git a/source/blender/makesdna/intern/dna_defaults.c b/source/blender/makesdna/intern/dna_defaults.c index 50794d1d2e5..f2498325f3d 100644 --- a/source/blender/makesdna/intern/dna_defaults.c +++ b/source/blender/makesdna/intern/dna_defaults.c @@ -82,6 +82,7 @@ #include "DNA_defaults.h" +#include "DNA_armature_types.h" #include "DNA_brush_types.h" #include "DNA_cachefile_types.h" #include "DNA_camera_types.h" @@ -96,6 +97,7 @@ #include "DNA_material_types.h" #include "DNA_mesh_types.h" #include "DNA_meta_types.h" +#include "DNA_modifier_types.h" #include "DNA_object_types.h" #include "DNA_pointcloud_types.h" #include "DNA_scene_types.h" @@ -119,6 +121,7 @@ #include "DNA_material_defaults.h" #include "DNA_mesh_defaults.h" #include "DNA_meta_defaults.h" +#include "DNA_modifier_defaults.h" #include "DNA_object_defaults.h" #include "DNA_pointcloud_defaults.h" #include "DNA_scene_defaults.h" @@ -198,6 +201,63 @@ SDNA_DEFAULT_DECL_STRUCT(Volume); /* DNA_world_defaults.h */ SDNA_DEFAULT_DECL_STRUCT(World); +/* DNA_modifier_defaults.h */ +SDNA_DEFAULT_DECL_STRUCT(ArmatureModifierData); +SDNA_DEFAULT_DECL_STRUCT(ArrayModifierData); +SDNA_DEFAULT_DECL_STRUCT(BevelModifierData); +SDNA_DEFAULT_DECL_STRUCT(BooleanModifierData); +SDNA_DEFAULT_DECL_STRUCT(BuildModifierData); +SDNA_DEFAULT_DECL_STRUCT(CastModifierData); +/* Cloth modifier skipped for now. */ +SDNA_DEFAULT_DECL_STRUCT(CollisionModifierData); +SDNA_DEFAULT_DECL_STRUCT(CorrectiveSmoothModifierData); +SDNA_DEFAULT_DECL_STRUCT(CurveModifierData); +// SDNA_DEFAULT_DECL_STRUCT(DataTransferModifierData); +SDNA_DEFAULT_DECL_STRUCT(DecimateModifierData); +SDNA_DEFAULT_DECL_STRUCT(DisplaceModifierData); +SDNA_DEFAULT_DECL_STRUCT(DynamicPaintModifierData); +SDNA_DEFAULT_DECL_STRUCT(EdgeSplitModifierData); +SDNA_DEFAULT_DECL_STRUCT(ExplodeModifierData); +/* Fluid modifier skipped for now. */ +SDNA_DEFAULT_DECL_STRUCT(HookModifierData); +SDNA_DEFAULT_DECL_STRUCT(LaplacianDeformModifierData); +SDNA_DEFAULT_DECL_STRUCT(LaplacianSmoothModifierData); +SDNA_DEFAULT_DECL_STRUCT(LatticeModifierData); +SDNA_DEFAULT_DECL_STRUCT(MaskModifierData); +SDNA_DEFAULT_DECL_STRUCT(MeshCacheModifierData); +SDNA_DEFAULT_DECL_STRUCT(MeshDeformModifierData); +SDNA_DEFAULT_DECL_STRUCT(MeshSeqCacheModifierData); +SDNA_DEFAULT_DECL_STRUCT(MirrorModifierData); +SDNA_DEFAULT_DECL_STRUCT(MultiresModifierData); +SDNA_DEFAULT_DECL_STRUCT(NormalEditModifierData); +SDNA_DEFAULT_DECL_STRUCT(OceanModifierData); +SDNA_DEFAULT_DECL_STRUCT(ParticleInstanceModifierData); +SDNA_DEFAULT_DECL_STRUCT(ParticleSystemModifierData); +SDNA_DEFAULT_DECL_STRUCT(RemeshModifierData); +SDNA_DEFAULT_DECL_STRUCT(ScrewModifierData); +/* Shape key modifier has no items. */ +SDNA_DEFAULT_DECL_STRUCT(ShrinkwrapModifierData); +SDNA_DEFAULT_DECL_STRUCT(SimpleDeformModifierData); +SDNA_DEFAULT_DECL_STRUCT(SimulationModifierData); +SDNA_DEFAULT_DECL_STRUCT(SkinModifierData); +SDNA_DEFAULT_DECL_STRUCT(SmoothModifierData); +/* Softbody modifier skipped for now. */ +SDNA_DEFAULT_DECL_STRUCT(SolidifyModifierData); +SDNA_DEFAULT_DECL_STRUCT(SubsurfModifierData); +SDNA_DEFAULT_DECL_STRUCT(SurfaceModifierData); +SDNA_DEFAULT_DECL_STRUCT(SurfaceDeformModifierData); +SDNA_DEFAULT_DECL_STRUCT(TriangulateModifierData); +SDNA_DEFAULT_DECL_STRUCT(UVProjectModifierData); +SDNA_DEFAULT_DECL_STRUCT(UVWarpModifierData); +SDNA_DEFAULT_DECL_STRUCT(WarpModifierData); +SDNA_DEFAULT_DECL_STRUCT(WaveModifierData); +SDNA_DEFAULT_DECL_STRUCT(WeightedNormalModifierData); +SDNA_DEFAULT_DECL_STRUCT(WeightVGEditModifierData); +SDNA_DEFAULT_DECL_STRUCT(WeightVGMixModifierData); +SDNA_DEFAULT_DECL_STRUCT(WeightVGProximityModifierData); +SDNA_DEFAULT_DECL_STRUCT(WeldModifierData); +SDNA_DEFAULT_DECL_STRUCT(WireframeModifierData); + #undef SDNA_DEFAULT_DECL_STRUCT /* Reuse existing definitions. */ @@ -321,6 +381,63 @@ const void *DNA_default_table[SDNA_TYPE_MAX] = { /* DNA_world_defaults.h */ SDNA_DEFAULT_DECL(World), + + /* DNA_modifier_defaults.h */ + SDNA_DEFAULT_DECL(ArmatureModifierData), + SDNA_DEFAULT_DECL(ArrayModifierData), + SDNA_DEFAULT_DECL(BevelModifierData), + SDNA_DEFAULT_DECL(BooleanModifierData), + SDNA_DEFAULT_DECL(BuildModifierData), + SDNA_DEFAULT_DECL(CastModifierData), + /* Cloth modifier skipped for now. */ + SDNA_DEFAULT_DECL(CollisionModifierData), + SDNA_DEFAULT_DECL(CorrectiveSmoothModifierData), + SDNA_DEFAULT_DECL(CurveModifierData), + // SDNA_DEFAULT_DECL(DataTransferModifierData), + SDNA_DEFAULT_DECL(DecimateModifierData), + SDNA_DEFAULT_DECL(DisplaceModifierData), + SDNA_DEFAULT_DECL(DynamicPaintModifierData), + SDNA_DEFAULT_DECL(EdgeSplitModifierData), + SDNA_DEFAULT_DECL(ExplodeModifierData), + /* Fluid modifier skipped for now. */ + SDNA_DEFAULT_DECL(HookModifierData), + SDNA_DEFAULT_DECL(LaplacianDeformModifierData), + SDNA_DEFAULT_DECL(LaplacianSmoothModifierData), + SDNA_DEFAULT_DECL(LatticeModifierData), + SDNA_DEFAULT_DECL(MaskModifierData), + SDNA_DEFAULT_DECL(MeshCacheModifierData), + SDNA_DEFAULT_DECL(MeshDeformModifierData), + SDNA_DEFAULT_DECL(MeshSeqCacheModifierData), + SDNA_DEFAULT_DECL(MirrorModifierData), + SDNA_DEFAULT_DECL(MultiresModifierData), + SDNA_DEFAULT_DECL(NormalEditModifierData), + SDNA_DEFAULT_DECL(OceanModifierData), + SDNA_DEFAULT_DECL(ParticleInstanceModifierData), + SDNA_DEFAULT_DECL(ParticleSystemModifierData), + SDNA_DEFAULT_DECL(RemeshModifierData), + SDNA_DEFAULT_DECL(ScrewModifierData), + /* Shape key modifier has no items. */ + SDNA_DEFAULT_DECL(ShrinkwrapModifierData), + SDNA_DEFAULT_DECL(SimpleDeformModifierData), + SDNA_DEFAULT_DECL(SimulationModifierData), + SDNA_DEFAULT_DECL(SkinModifierData), + SDNA_DEFAULT_DECL(SmoothModifierData), + /* Softbody modifier skipped for now. */ + SDNA_DEFAULT_DECL(SolidifyModifierData), + SDNA_DEFAULT_DECL(SubsurfModifierData), + SDNA_DEFAULT_DECL(SurfaceModifierData), + SDNA_DEFAULT_DECL(SurfaceDeformModifierData), + SDNA_DEFAULT_DECL(TriangulateModifierData), + SDNA_DEFAULT_DECL(UVProjectModifierData), + SDNA_DEFAULT_DECL(UVWarpModifierData), + SDNA_DEFAULT_DECL(WarpModifierData), + SDNA_DEFAULT_DECL(WaveModifierData), + SDNA_DEFAULT_DECL(WeightedNormalModifierData), + SDNA_DEFAULT_DECL(WeightVGEditModifierData), + SDNA_DEFAULT_DECL(WeightVGMixModifierData), + SDNA_DEFAULT_DECL(WeightVGProximityModifierData), + SDNA_DEFAULT_DECL(WeldModifierData), + SDNA_DEFAULT_DECL(WireframeModifierData), }; #undef SDNA_DEFAULT_DECL #undef SDNA_DEFAULT_DECL_EX diff --git a/source/blender/makesrna/intern/rna_modifier.c b/source/blender/makesrna/intern/rna_modifier.c index 97d6f09d492..3fff2feb10d 100644 --- a/source/blender/makesrna/intern/rna_modifier.c +++ b/source/blender/makesrna/intern/rna_modifier.c @@ -3742,7 +3742,6 @@ static void rna_def_modifier_particleinstance(BlenderRNA *brna) prop = RNA_def_property(srna, "particle_amount", PROP_FLOAT, PROP_FACTOR); RNA_def_property_range(prop, 0.0, 1.0); RNA_def_property_ui_text(prop, "Particle Amount", "Amount of particles to use for instancing"); - RNA_def_property_float_default(prop, 1.0f); RNA_def_property_update(prop, 0, "rna_Modifier_update"); prop = RNA_def_property(srna, "particle_offset", PROP_FLOAT, PROP_FACTOR); @@ -3751,7 +3750,6 @@ static void rna_def_modifier_particleinstance(BlenderRNA *brna) "Particle Offset", "Relative offset of particles to use for instancing, to avoid overlap " "of multiple instances"); - RNA_def_property_float_default(prop, 0.0f); RNA_def_property_update(prop, 0, "rna_Modifier_update"); prop = RNA_def_property(srna, "index_layer_name", PROP_STRING, PROP_NONE); @@ -4515,7 +4513,6 @@ static void rna_def_modifier_simpledeform(BlenderRNA *brna) prop = RNA_def_property(srna, "angle", PROP_FLOAT, PROP_ANGLE); RNA_def_property_float_sdna(prop, NULL, "factor"); RNA_def_property_range(prop, -FLT_MAX, FLT_MAX); - RNA_def_property_float_default(prop, DEG2RADF(45.0f)); RNA_def_property_ui_range(prop, DEG2RAD(-360.0), DEG2RAD(360.0), 10.0, 3); RNA_def_property_ui_text(prop, "Angle", "Angle of deformation"); RNA_def_property_update(prop, 0, "rna_Modifier_update"); @@ -6685,7 +6682,7 @@ static void rna_def_modifier_datatransfer(BlenderRNA *brna) prop = RNA_def_float_factor( srna, "mix_factor", - 1.0f, + 0.0f, 0.0f, 1.0f, "Mix Factor", @@ -6775,27 +6772,15 @@ static void rna_def_modifier_normaledit(BlenderRNA *brna) RNA_def_property_ui_text(prop, "Mix Mode", "How to mix generated normals with existing ones"); RNA_def_property_update(prop, 0, "rna_Modifier_update"); - prop = RNA_def_float(srna, - "mix_factor", - 1.0f, - 0.0f, - 1.0f, - "Mix Factor", - "How much of generated normals to mix with exiting ones", - 0.0f, - 1.0f); - RNA_def_property_update(prop, 0, "rna_Modifier_update"); - - prop = RNA_def_float(srna, - "mix_limit", - 1.0f, - 0.0f, - DEG2RADF(180.0f), - "Max Angle", - "Maximum angle between old and new normals", - 0.0f, - DEG2RADF(180.0f)); - RNA_def_property_subtype(prop, PROP_ANGLE); + prop = RNA_def_property(srna, "mix_factor", PROP_FLOAT, PROP_FACTOR); + RNA_def_property_range(prop, 0.0, 1.0); + RNA_def_property_ui_text( + prop, "Mix Factor", "How much of generated normals to mix with exiting ones"); + RNA_def_property_update(prop, 0, "rna_Modifier_update"); + + prop = RNA_def_property(srna, "mix_limit", PROP_FLOAT, PROP_ANGLE); + RNA_def_property_range(prop, 0.0, DEG2RADF(180.0f)); + RNA_def_property_ui_text(prop, "Max Angle", "Maximum angle between old and new normals"); RNA_def_property_update(prop, 0, "rna_Modifier_update"); prop = RNA_def_property(srna, "no_polynors_fix", PROP_BOOLEAN, PROP_NONE); diff --git a/source/blender/modifiers/CMakeLists.txt b/source/blender/modifiers/CMakeLists.txt index 3bc8a23184b..37656ed7b60 100644 --- a/source/blender/modifiers/CMakeLists.txt +++ b/source/blender/modifiers/CMakeLists.txt @@ -203,4 +203,5 @@ blender_add_lib(bf_modifiers "${SRC}" "${INC}" "${INC_SYS}" "${LIB}") # Some modifiers include BLO_read_write.h, which includes dna_type_offsets.h # which is generated by bf_dna. Need to ensure compilaiton order here. +# Also needed so we can use dna_type_offsets.h for defaults initialization. add_dependencies(bf_modifiers bf_dna) diff --git a/source/blender/modifiers/intern/MOD_armature.c b/source/blender/modifiers/intern/MOD_armature.c index f4b2df617af..4605e623dfd 100644 --- a/source/blender/modifiers/intern/MOD_armature.c +++ b/source/blender/modifiers/intern/MOD_armature.c @@ -29,6 +29,7 @@ #include "BLT_translation.h" #include "DNA_armature_types.h" +#include "DNA_defaults.h" #include "DNA_mesh_types.h" #include "DNA_object_types.h" #include "DNA_screen_types.h" @@ -65,7 +66,9 @@ static void initData(ModifierData *md) { ArmatureModifierData *amd = (ArmatureModifierData *)md; - amd->deformflag = ARM_DEF_VGROUP; + BLI_assert(MEMCMP_STRUCT_AFTER_IS_ZERO(amd, modifier)); + + MEMCPY_STRUCT_AFTER(amd, DNA_struct_default_get(ArmatureModifierData), modifier); } static void copyData(const ModifierData *md, ModifierData *target, const int flag) diff --git a/source/blender/modifiers/intern/MOD_array.c b/source/blender/modifiers/intern/MOD_array.c index 70e557dd577..ac5cc2f101f 100644 --- a/source/blender/modifiers/intern/MOD_array.c +++ b/source/blender/modifiers/intern/MOD_array.c @@ -32,6 +32,7 @@ #include "BLT_translation.h" #include "DNA_curve_types.h" +#include "DNA_defaults.h" #include "DNA_mesh_types.h" #include "DNA_meshdata_types.h" #include "DNA_object_types.h" @@ -63,19 +64,9 @@ static void initData(ModifierData *md) { ArrayModifierData *amd = (ArrayModifierData *)md; - /* default to 2 duplicates distributed along the x-axis by an - * offset of 1 object-width - */ - amd->start_cap = amd->end_cap = amd->curve_ob = amd->offset_ob = NULL; - amd->count = 2; - zero_v3(amd->offset); - amd->scale[0] = 1; - amd->scale[1] = amd->scale[2] = 0; - amd->length = 0; - amd->merge_dist = 0.01; - amd->fit_type = MOD_ARR_FIXEDCOUNT; - amd->offset_type = MOD_ARR_OFF_RELATIVE; - amd->flags = 0; + BLI_assert(MEMCMP_STRUCT_AFTER_IS_ZERO(amd, modifier)); + + MEMCPY_STRUCT_AFTER(amd, DNA_struct_default_get(ArrayModifierData), modifier); /* Open the first subpanel by default, it corresspnds to Relative offset which is enabled too. */ md->ui_expand_flag = (1 << 0) | (1 << 1); diff --git a/source/blender/modifiers/intern/MOD_bevel.c b/source/blender/modifiers/intern/MOD_bevel.c index 407ba179ef8..71dde65fd17 100644 --- a/source/blender/modifiers/intern/MOD_bevel.c +++ b/source/blender/modifiers/intern/MOD_bevel.c @@ -30,6 +30,7 @@ #include "BLT_translation.h" #include "DNA_curveprofile_types.h" +#include "DNA_defaults.h" #include "DNA_mesh_types.h" #include "DNA_meshdata_types.h" #include "DNA_object_types.h" @@ -63,22 +64,10 @@ static void initData(ModifierData *md) { BevelModifierData *bmd = (BevelModifierData *)md; - bmd->value = 0.1f; - bmd->res = 1; - bmd->flags = 0; - bmd->val_flags = MOD_BEVEL_AMT_OFFSET; - bmd->lim_flags = 0; - bmd->e_flags = 0; - bmd->edge_flags = 0; - bmd->face_str_mode = MOD_BEVEL_FACE_STRENGTH_NONE; - bmd->miter_inner = MOD_BEVEL_MITER_SHARP; - bmd->miter_outer = MOD_BEVEL_MITER_SHARP; - bmd->affect_type = MOD_BEVEL_AFFECT_EDGES; - bmd->spread = 0.1f; - bmd->mat = -1; - bmd->profile = 0.5f; - bmd->bevel_angle = DEG2RADF(30.0f); - bmd->defgrp_name[0] = '\0'; + BLI_assert(MEMCMP_STRUCT_AFTER_IS_ZERO(bmd, modifier)); + + MEMCPY_STRUCT_AFTER(bmd, DNA_struct_default_get(BevelModifierData), modifier); + bmd->custom_profile = BKE_curveprofile_add(PROF_PRESET_LINE); } diff --git a/source/blender/modifiers/intern/MOD_boolean.c b/source/blender/modifiers/intern/MOD_boolean.c index 4005b56880f..ca8a4a5da1f 100644 --- a/source/blender/modifiers/intern/MOD_boolean.c +++ b/source/blender/modifiers/intern/MOD_boolean.c @@ -35,6 +35,7 @@ #include "BLT_translation.h" #include "DNA_collection_types.h" +#include "DNA_defaults.h" #include "DNA_mesh_types.h" #include "DNA_meshdata_types.h" #include "DNA_object_types.h" @@ -79,10 +80,9 @@ static void initData(ModifierData *md) { BooleanModifierData *bmd = (BooleanModifierData *)md; - bmd->double_threshold = 1e-6f; - bmd->operation = eBooleanModifierOp_Difference; - bmd->solver = eBooleanModifierSolver_Exact; - bmd->flag = eBooleanModifierFlag_Object; + BLI_assert(MEMCMP_STRUCT_AFTER_IS_ZERO(bmd, modifier)); + + MEMCPY_STRUCT_AFTER(bmd, DNA_struct_default_get(BooleanModifierData), modifier); } static bool isDisabled(const struct Scene *UNUSED(scene), diff --git a/source/blender/modifiers/intern/MOD_build.c b/source/blender/modifiers/intern/MOD_build.c index ac6c28e24c9..931a20f84fc 100644 --- a/source/blender/modifiers/intern/MOD_build.c +++ b/source/blender/modifiers/intern/MOD_build.c @@ -29,6 +29,7 @@ #include "BLI_math_vector.h" #include "BLI_rand.h" +#include "DNA_defaults.h" #include "DNA_mesh_types.h" #include "DNA_meshdata_types.h" #include "DNA_object_types.h" @@ -55,8 +56,9 @@ static void initData(ModifierData *md) { BuildModifierData *bmd = (BuildModifierData *)md; - bmd->start = 1.0; - bmd->length = 100.0; + BLI_assert(MEMCMP_STRUCT_AFTER_IS_ZERO(bmd, modifier)); + + MEMCPY_STRUCT_AFTER(bmd, DNA_struct_default_get(BuildModifierData), modifier); } static bool dependsOnTime(ModifierData *UNUSED(md)) diff --git a/source/blender/modifiers/intern/MOD_cast.c b/source/blender/modifiers/intern/MOD_cast.c index 00f4cd63b4e..38a754f9eeb 100644 --- a/source/blender/modifiers/intern/MOD_cast.c +++ b/source/blender/modifiers/intern/MOD_cast.c @@ -27,6 +27,7 @@ #include "BLT_translation.h" +#include "DNA_defaults.h" #include "DNA_mesh_types.h" #include "DNA_meshdata_types.h" #include "DNA_object_types.h" @@ -56,13 +57,9 @@ static void initData(ModifierData *md) { CastModifierData *cmd = (CastModifierData *)md; - cmd->fac = 0.5f; - cmd->radius = 0.0f; - cmd->size = 0.0f; - cmd->flag = MOD_CAST_X | MOD_CAST_Y | MOD_CAST_Z | MOD_CAST_SIZE_FROM_RADIUS; - cmd->type = MOD_CAST_TYPE_SPHERE; - cmd->defgrp_name[0] = '\0'; - cmd->object = NULL; + BLI_assert(MEMCMP_STRUCT_AFTER_IS_ZERO(cmd, modifier)); + + MEMCPY_STRUCT_AFTER(cmd, DNA_struct_default_get(CastModifierData), modifier); } static bool isDisabled(const struct Scene *UNUSED(scene), diff --git a/source/blender/modifiers/intern/MOD_collision.c b/source/blender/modifiers/intern/MOD_collision.c index d05b6327ec9..964ed20eb26 100644 --- a/source/blender/modifiers/intern/MOD_collision.c +++ b/source/blender/modifiers/intern/MOD_collision.c @@ -27,6 +27,7 @@ #include "BLT_translation.h" +#include "DNA_defaults.h" #include "DNA_mesh_types.h" #include "DNA_meshdata_types.h" #include "DNA_object_types.h" @@ -62,16 +63,9 @@ static void initData(ModifierData *md) { CollisionModifierData *collmd = (CollisionModifierData *)md; - collmd->x = NULL; - collmd->xnew = NULL; - collmd->current_x = NULL; - collmd->current_xnew = NULL; - collmd->current_v = NULL; - collmd->time_x = collmd->time_xnew = -1000; - collmd->mvert_num = 0; - collmd->tri_num = 0; - collmd->is_static = false; - collmd->bvhtree = NULL; + BLI_assert(MEMCMP_STRUCT_AFTER_IS_ZERO(collmd, modifier)); + + MEMCPY_STRUCT_AFTER(collmd, DNA_struct_default_get(CollisionModifierData), modifier); } static void freeData(ModifierData *md) diff --git a/source/blender/modifiers/intern/MOD_correctivesmooth.c b/source/blender/modifiers/intern/MOD_correctivesmooth.c index 0e6b393ece2..09fde4e6556 100644 --- a/source/blender/modifiers/intern/MOD_correctivesmooth.c +++ b/source/blender/modifiers/intern/MOD_correctivesmooth.c @@ -29,6 +29,7 @@ #include "BLT_translation.h" +#include "DNA_defaults.h" #include "DNA_mesh_types.h" #include "DNA_meshdata_types.h" #include "DNA_object_types.h" @@ -56,8 +57,6 @@ #include "BLO_read_write.h" -#include "BLI_strict_flags.h" - #include "DEG_depsgraph_query.h" // #define DEBUG_TIME @@ -74,20 +73,15 @@ static void initData(ModifierData *md) { CorrectiveSmoothModifierData *csmd = (CorrectiveSmoothModifierData *)md; - csmd->bind_coords = NULL; - csmd->bind_coords_num = 0; - - csmd->lambda = 0.5f; - csmd->scale = 1.0f; - csmd->repeat = 5; - csmd->flag = 0; - csmd->smooth_type = MOD_CORRECTIVESMOOTH_SMOOTH_SIMPLE; + BLI_assert(MEMCMP_STRUCT_AFTER_IS_ZERO(csmd, modifier)); - csmd->defgrp_name[0] = '\0'; + MEMCPY_STRUCT_AFTER(csmd, DNA_struct_default_get(CorrectiveSmoothModifierData), modifier); csmd->delta_cache.deltas = NULL; } +#include "BLI_strict_flags.h" + static void copyData(const ModifierData *md, ModifierData *target, const int flag) { const CorrectiveSmoothModifierData *csmd = (const CorrectiveSmoothModifierData *)md; diff --git a/source/blender/modifiers/intern/MOD_curve.c b/source/blender/modifiers/intern/MOD_curve.c index 7195071c705..a1443719d02 100644 --- a/source/blender/modifiers/intern/MOD_curve.c +++ b/source/blender/modifiers/intern/MOD_curve.c @@ -27,6 +27,7 @@ #include "BLT_translation.h" +#include "DNA_defaults.h" #include "DNA_mesh_types.h" #include "DNA_object_types.h" #include "DNA_scene_types.h" @@ -60,7 +61,9 @@ static void initData(ModifierData *md) { CurveModifierData *cmd = (CurveModifierData *)md; - cmd->defaxis = MOD_CURVE_POSX; + BLI_assert(MEMCMP_STRUCT_AFTER_IS_ZERO(cmd, modifier)); + + MEMCPY_STRUCT_AFTER(cmd, DNA_struct_default_get(CurveModifierData), modifier); } static void requiredDataMask(Object *UNUSED(ob), diff --git a/source/blender/modifiers/intern/MOD_decimate.c b/source/blender/modifiers/intern/MOD_decimate.c index f0bfb3cc230..3c037e25940 100644 --- a/source/blender/modifiers/intern/MOD_decimate.c +++ b/source/blender/modifiers/intern/MOD_decimate.c @@ -27,6 +27,7 @@ #include "BLT_translation.h" +#include "DNA_defaults.h" #include "DNA_mesh_types.h" #include "DNA_meshdata_types.h" #include "DNA_object_types.h" @@ -63,9 +64,9 @@ static void initData(ModifierData *md) { DecimateModifierData *dmd = (DecimateModifierData *)md; - dmd->percent = 1.0; - dmd->angle = DEG2RADF(5.0f); - dmd->defgrp_factor = 1.0; + BLI_assert(MEMCMP_STRUCT_AFTER_IS_ZERO(dmd, modifier)); + + MEMCPY_STRUCT_AFTER(dmd, DNA_struct_default_get(DecimateModifierData), modifier); } static void requiredDataMask(Object *UNUSED(ob), diff --git a/source/blender/modifiers/intern/MOD_displace.c b/source/blender/modifiers/intern/MOD_displace.c index f66a9c3bd4a..700592c6bc3 100644 --- a/source/blender/modifiers/intern/MOD_displace.c +++ b/source/blender/modifiers/intern/MOD_displace.c @@ -28,6 +28,7 @@ #include "BLT_translation.h" +#include "DNA_defaults.h" #include "DNA_mesh_types.h" #include "DNA_meshdata_types.h" #include "DNA_object_types.h" @@ -68,11 +69,9 @@ static void initData(ModifierData *md) { DisplaceModifierData *dmd = (DisplaceModifierData *)md; - dmd->texture = NULL; - dmd->strength = 1; - dmd->direction = MOD_DISP_DIR_NOR; - dmd->midlevel = 0.5; - dmd->space = MOD_DISP_SPACE_LOCAL; + BLI_assert(MEMCMP_STRUCT_AFTER_IS_ZERO(dmd, modifier)); + + MEMCPY_STRUCT_AFTER(dmd, DNA_struct_default_get(DisplaceModifierData), modifier); } static void requiredDataMask(Object *UNUSED(ob), diff --git a/source/blender/modifiers/intern/MOD_dynamicpaint.c b/source/blender/modifiers/intern/MOD_dynamicpaint.c index 91a43423478..a0a9934af9f 100644 --- a/source/blender/modifiers/intern/MOD_dynamicpaint.c +++ b/source/blender/modifiers/intern/MOD_dynamicpaint.c @@ -19,12 +19,14 @@ */ #include <stddef.h> +#include <string.h> #include "BLI_listbase.h" #include "BLI_utildefines.h" #include "BLT_translation.h" +#include "DNA_defaults.h" #include "DNA_dynamicpaint_types.h" #include "DNA_mesh_types.h" #include "DNA_object_force_types.h" @@ -57,9 +59,9 @@ static void initData(ModifierData *md) { DynamicPaintModifierData *pmd = (DynamicPaintModifierData *)md; - pmd->canvas = NULL; - pmd->brush = NULL; - pmd->type = MOD_DYNAMICPAINT_TYPE_CANVAS; + BLI_assert(MEMCMP_STRUCT_AFTER_IS_ZERO(pmd, modifier)); + + MEMCPY_STRUCT_AFTER(pmd, DNA_struct_default_get(DynamicPaintModifierData), modifier); } static void copyData(const ModifierData *md, ModifierData *target, const int flag) diff --git a/source/blender/modifiers/intern/MOD_edgesplit.c b/source/blender/modifiers/intern/MOD_edgesplit.c index cc4fa4e7118..b28b21a9a34 100644 --- a/source/blender/modifiers/intern/MOD_edgesplit.c +++ b/source/blender/modifiers/intern/MOD_edgesplit.c @@ -32,6 +32,7 @@ #include "BLT_translation.h" +#include "DNA_defaults.h" #include "DNA_mesh_types.h" #include "DNA_object_types.h" #include "DNA_screen_types.h" @@ -119,9 +120,9 @@ static void initData(ModifierData *md) { EdgeSplitModifierData *emd = (EdgeSplitModifierData *)md; - /* default to 30-degree split angle, sharpness from both angle & flag */ - emd->split_angle = DEG2RADF(30.0f); - emd->flags = MOD_EDGESPLIT_FROMANGLE | MOD_EDGESPLIT_FROMFLAG; + BLI_assert(MEMCMP_STRUCT_AFTER_IS_ZERO(emd, modifier)); + + MEMCPY_STRUCT_AFTER(emd, DNA_struct_default_get(EdgeSplitModifierData), modifier); } static Mesh *modifyMesh(ModifierData *md, const ModifierEvalContext *UNUSED(ctx), Mesh *mesh) diff --git a/source/blender/modifiers/intern/MOD_explode.c b/source/blender/modifiers/intern/MOD_explode.c index 1f44941d625..bdfc0c0ef59 100644 --- a/source/blender/modifiers/intern/MOD_explode.c +++ b/source/blender/modifiers/intern/MOD_explode.c @@ -30,6 +30,7 @@ #include "BLT_translation.h" +#include "DNA_defaults.h" #include "DNA_mesh_types.h" #include "DNA_meshdata_types.h" #include "DNA_object_types.h" @@ -64,8 +65,9 @@ static void initData(ModifierData *md) { ExplodeModifierData *emd = (ExplodeModifierData *)md; - emd->facepa = NULL; - emd->flag |= eExplodeFlag_Unborn + eExplodeFlag_Alive + eExplodeFlag_Dead; + BLI_assert(MEMCMP_STRUCT_AFTER_IS_ZERO(emd, modifier)); + + MEMCPY_STRUCT_AFTER(emd, DNA_struct_default_get(ExplodeModifierData), modifier); } static void freeData(ModifierData *md) { diff --git a/source/blender/modifiers/intern/MOD_hook.c b/source/blender/modifiers/intern/MOD_hook.c index f13c8087270..4767dabc7ed 100644 --- a/source/blender/modifiers/intern/MOD_hook.c +++ b/source/blender/modifiers/intern/MOD_hook.c @@ -28,6 +28,7 @@ #include "BLT_translation.h" +#include "DNA_defaults.h" #include "DNA_mesh_types.h" #include "DNA_meshdata_types.h" #include "DNA_object_types.h" @@ -63,10 +64,11 @@ static void initData(ModifierData *md) { HookModifierData *hmd = (HookModifierData *)md; - hmd->force = 1.0; + BLI_assert(MEMCMP_STRUCT_AFTER_IS_ZERO(hmd, modifier)); + + MEMCPY_STRUCT_AFTER(hmd, DNA_struct_default_get(HookModifierData), modifier); + hmd->curfalloff = BKE_curvemapping_add(1, 0.0f, 0.0f, 1.0f, 1.0f); - hmd->falloff_type = eHook_Falloff_Smooth; - hmd->flag = 0; } static void copyData(const ModifierData *md, ModifierData *target, const int flag) diff --git a/source/blender/modifiers/intern/MOD_laplaciandeform.c b/source/blender/modifiers/intern/MOD_laplaciandeform.c index 94b50a35e17..5f9befbcb82 100644 --- a/source/blender/modifiers/intern/MOD_laplaciandeform.c +++ b/source/blender/modifiers/intern/MOD_laplaciandeform.c @@ -31,6 +31,7 @@ #include "BLT_translation.h" +#include "DNA_defaults.h" #include "DNA_mesh_types.h" #include "DNA_meshdata_types.h" #include "DNA_screen_types.h" @@ -731,12 +732,10 @@ static void LaplacianDeformModifier_do( static void initData(ModifierData *md) { LaplacianDeformModifierData *lmd = (LaplacianDeformModifierData *)md; - lmd->anchor_grp_name[0] = '\0'; - lmd->total_verts = 0; - lmd->repeat = 1; - lmd->vertexco = NULL; - lmd->cache_system = NULL; - lmd->flag = 0; + + BLI_assert(MEMCMP_STRUCT_AFTER_IS_ZERO(lmd, modifier)); + + MEMCPY_STRUCT_AFTER(lmd, DNA_struct_default_get(LaplacianDeformModifierData), modifier); } static void copyData(const ModifierData *md, ModifierData *target, const int flag) diff --git a/source/blender/modifiers/intern/MOD_laplaciansmooth.c b/source/blender/modifiers/intern/MOD_laplaciansmooth.c index e7fc031840d..76f42d2f3ec 100644 --- a/source/blender/modifiers/intern/MOD_laplaciansmooth.c +++ b/source/blender/modifiers/intern/MOD_laplaciansmooth.c @@ -27,6 +27,7 @@ #include "BLT_translation.h" +#include "DNA_defaults.h" #include "DNA_mesh_types.h" #include "DNA_meshdata_types.h" #include "DNA_object_types.h" @@ -497,12 +498,10 @@ static void laplaciansmoothModifier_do( static void init_data(ModifierData *md) { LaplacianSmoothModifierData *smd = (LaplacianSmoothModifierData *)md; - smd->lambda = 0.01f; - smd->lambda_border = 0.01f; - smd->repeat = 1; - smd->flag = MOD_LAPLACIANSMOOTH_X | MOD_LAPLACIANSMOOTH_Y | MOD_LAPLACIANSMOOTH_Z | - MOD_LAPLACIANSMOOTH_PRESERVE_VOLUME | MOD_LAPLACIANSMOOTH_NORMALIZED; - smd->defgrp_name[0] = '\0'; + + BLI_assert(MEMCMP_STRUCT_AFTER_IS_ZERO(smd, modifier)); + + MEMCPY_STRUCT_AFTER(smd, DNA_struct_default_get(LaplacianSmoothModifierData), modifier); } static bool is_disabled(const struct Scene *UNUSED(scene), diff --git a/source/blender/modifiers/intern/MOD_lattice.c b/source/blender/modifiers/intern/MOD_lattice.c index db75ca295ba..c024777b03f 100644 --- a/source/blender/modifiers/intern/MOD_lattice.c +++ b/source/blender/modifiers/intern/MOD_lattice.c @@ -27,6 +27,7 @@ #include "BLT_translation.h" +#include "DNA_defaults.h" #include "DNA_object_types.h" #include "DNA_screen_types.h" @@ -55,7 +56,10 @@ static void initData(ModifierData *md) { LatticeModifierData *lmd = (LatticeModifierData *)md; - lmd->strength = 1.0f; + + BLI_assert(MEMCMP_STRUCT_AFTER_IS_ZERO(lmd, modifier)); + + MEMCPY_STRUCT_AFTER(lmd, DNA_struct_default_get(LatticeModifierData), modifier); } static void requiredDataMask(Object *UNUSED(ob), diff --git a/source/blender/modifiers/intern/MOD_mask.cc b/source/blender/modifiers/intern/MOD_mask.cc index 2bf1c58b126..140a23d6ca2 100644 --- a/source/blender/modifiers/intern/MOD_mask.cc +++ b/source/blender/modifiers/intern/MOD_mask.cc @@ -31,6 +31,7 @@ #include "BLT_translation.h" #include "DNA_armature_types.h" +#include "DNA_defaults.h" #include "DNA_mesh_types.h" #include "DNA_meshdata_types.h" #include "DNA_modifier_types.h" @@ -68,6 +69,15 @@ using blender::MutableSpan; using blender::Span; using blender::Vector; +static void initData(ModifierData *md) +{ + MaskModifierData *mmd = (MaskModifierData *)md; + + BLI_assert(MEMCMP_STRUCT_AFTER_IS_ZERO(mmd, modifier)); + + MEMCPY_STRUCT_AFTER(mmd, DNA_struct_default_get(MaskModifierData), modifier); +} + static void requiredDataMask(Object *UNUSED(ob), ModifierData *UNUSED(md), CustomData_MeshMasks *r_cddata_masks) @@ -455,7 +465,7 @@ ModifierTypeInfo modifierType_Mask = { /* modifyPointCloud */ NULL, /* modifyVolume */ NULL, - /* initData */ NULL, + /* initData */ initData, /* requiredDataMask */ requiredDataMask, /* freeData */ NULL, /* isDisabled */ isDisabled, diff --git a/source/blender/modifiers/intern/MOD_meshcache.c b/source/blender/modifiers/intern/MOD_meshcache.c index aa6f876b1c6..58717559a50 100644 --- a/source/blender/modifiers/intern/MOD_meshcache.c +++ b/source/blender/modifiers/intern/MOD_meshcache.c @@ -28,6 +28,7 @@ #include "BLT_translation.h" +#include "DNA_defaults.h" #include "DNA_mesh_types.h" #include "DNA_meshdata_types.h" #include "DNA_object_types.h" @@ -57,16 +58,9 @@ static void initData(ModifierData *md) { MeshCacheModifierData *mcmd = (MeshCacheModifierData *)md; - mcmd->flag = 0; - mcmd->type = MOD_MESHCACHE_TYPE_MDD; - mcmd->interp = MOD_MESHCACHE_INTERP_LINEAR; - mcmd->frame_scale = 1.0f; + BLI_assert(MEMCMP_STRUCT_AFTER_IS_ZERO(mcmd, modifier)); - mcmd->factor = 1.0f; - - /* (Y, Z). Blender default */ - mcmd->forward_axis = 1; - mcmd->up_axis = 2; + MEMCPY_STRUCT_AFTER(mcmd, DNA_struct_default_get(MeshCacheModifierData), modifier); } static bool dependsOnTime(ModifierData *md) diff --git a/source/blender/modifiers/intern/MOD_meshdeform.c b/source/blender/modifiers/intern/MOD_meshdeform.c index 48552cfb9a4..7e086e01cd4 100644 --- a/source/blender/modifiers/intern/MOD_meshdeform.c +++ b/source/blender/modifiers/intern/MOD_meshdeform.c @@ -28,6 +28,7 @@ #include "BLT_translation.h" +#include "DNA_defaults.h" #include "DNA_mesh_types.h" #include "DNA_meshdata_types.h" #include "DNA_object_types.h" @@ -68,7 +69,9 @@ static void initData(ModifierData *md) { MeshDeformModifierData *mmd = (MeshDeformModifierData *)md; - mmd->gridsize = 5; + BLI_assert(MEMCMP_STRUCT_AFTER_IS_ZERO(mmd, modifier)); + + MEMCPY_STRUCT_AFTER(mmd, DNA_struct_default_get(MeshDeformModifierData), modifier); } static void freeData(ModifierData *md) diff --git a/source/blender/modifiers/intern/MOD_meshsequencecache.c b/source/blender/modifiers/intern/MOD_meshsequencecache.c index eca20c088ce..48b1a4c56a8 100644 --- a/source/blender/modifiers/intern/MOD_meshsequencecache.c +++ b/source/blender/modifiers/intern/MOD_meshsequencecache.c @@ -26,6 +26,7 @@ #include "BLT_translation.h" #include "DNA_cachefile_types.h" +#include "DNA_defaults.h" #include "DNA_mesh_types.h" #include "DNA_meshdata_types.h" #include "DNA_modifier_types.h" @@ -64,15 +65,9 @@ static void initData(ModifierData *md) { MeshSeqCacheModifierData *mcmd = (MeshSeqCacheModifierData *)md; - mcmd->cache_file = NULL; - mcmd->object_path[0] = '\0'; - mcmd->read_flag = MOD_MESHSEQ_READ_ALL | MOD_MESHSEQ_INTERPOLATE_VERTICES; - mcmd->velocity_scale = 1.0f; - mcmd->vertex_velocities = NULL; - mcmd->num_vertices = 0; + BLI_assert(MEMCMP_STRUCT_AFTER_IS_ZERO(mcmd, modifier)); - mcmd->reader = NULL; - mcmd->reader_object_path[0] = '\0'; + MEMCPY_STRUCT_AFTER(mcmd, DNA_struct_default_get(MeshSeqCacheModifierData), modifier); } static void copyData(const ModifierData *md, ModifierData *target, const int flag) diff --git a/source/blender/modifiers/intern/MOD_mirror.c b/source/blender/modifiers/intern/MOD_mirror.c index 5098ea37333..fe2ed278230 100644 --- a/source/blender/modifiers/intern/MOD_mirror.c +++ b/source/blender/modifiers/intern/MOD_mirror.c @@ -25,6 +25,7 @@ #include "BLT_translation.h" +#include "DNA_defaults.h" #include "DNA_mesh_types.h" #include "DNA_meshdata_types.h" #include "DNA_object_types.h" @@ -59,9 +60,9 @@ static void initData(ModifierData *md) { MirrorModifierData *mmd = (MirrorModifierData *)md; - mmd->flag |= (MOD_MIR_AXIS_X | MOD_MIR_VGROUP); - mmd->tolerance = 0.001; - mmd->mirror_ob = NULL; + BLI_assert(MEMCMP_STRUCT_AFTER_IS_ZERO(mmd, modifier)); + + MEMCPY_STRUCT_AFTER(mmd, DNA_struct_default_get(MirrorModifierData), modifier); } static void foreachObjectLink(ModifierData *md, Object *ob, ObjectWalkFunc walk, void *userData) diff --git a/source/blender/modifiers/intern/MOD_multires.c b/source/blender/modifiers/intern/MOD_multires.c index 397e4e2c698..f1c07b47c26 100644 --- a/source/blender/modifiers/intern/MOD_multires.c +++ b/source/blender/modifiers/intern/MOD_multires.c @@ -29,6 +29,7 @@ #include "BLT_translation.h" +#include "DNA_defaults.h" #include "DNA_mesh_types.h" #include "DNA_object_types.h" #include "DNA_scene_types.h" @@ -68,14 +69,9 @@ static void initData(ModifierData *md) { MultiresModifierData *mmd = (MultiresModifierData *)md; - mmd->lvl = 0; - mmd->sculptlvl = 0; - mmd->renderlvl = 0; - mmd->totlvl = 0; - mmd->uv_smooth = SUBSURF_UV_SMOOTH_PRESERVE_CORNERS; - mmd->boundary_smooth = SUBSURF_BOUNDARY_SMOOTH_ALL; - mmd->quality = 4; - mmd->flags |= (eMultiresModifierFlag_UseCrease | eMultiresModifierFlag_ControlEdges); + BLI_assert(MEMCMP_STRUCT_AFTER_IS_ZERO(mmd, modifier)); + + MEMCPY_STRUCT_AFTER(mmd, DNA_struct_default_get(MultiresModifierData), modifier); /* Open subdivision panels by default. */ md->ui_expand_flag = (1 << 0) | (1 << 1); diff --git a/source/blender/modifiers/intern/MOD_normal_edit.c b/source/blender/modifiers/intern/MOD_normal_edit.c index 691d3741b12..a10a636b268 100644 --- a/source/blender/modifiers/intern/MOD_normal_edit.c +++ b/source/blender/modifiers/intern/MOD_normal_edit.c @@ -29,6 +29,7 @@ #include "BLT_translation.h" +#include "DNA_defaults.h" #include "DNA_mesh_types.h" #include "DNA_meshdata_types.h" #include "DNA_object_types.h" @@ -646,11 +647,9 @@ static void initData(ModifierData *md) { NormalEditModifierData *enmd = (NormalEditModifierData *)md; - enmd->mode = MOD_NORMALEDIT_MODE_RADIAL; + BLI_assert(MEMCMP_STRUCT_AFTER_IS_ZERO(enmd, modifier)); - enmd->mix_mode = MOD_NORMALEDIT_MIX_COPY; - enmd->mix_factor = 1.0f; - enmd->mix_limit = M_PI; + MEMCPY_STRUCT_AFTER(enmd, DNA_struct_default_get(NormalEditModifierData), modifier); } static void requiredDataMask(Object *UNUSED(ob), diff --git a/source/blender/modifiers/intern/MOD_ocean.c b/source/blender/modifiers/intern/MOD_ocean.c index b9f05d0cdd3..13a317a0f3c 100644 --- a/source/blender/modifiers/intern/MOD_ocean.c +++ b/source/blender/modifiers/intern/MOD_ocean.c @@ -30,6 +30,7 @@ #include "BLT_translation.h" #include "DNA_customdata_types.h" +#include "DNA_defaults.h" #include "DNA_mesh_types.h" #include "DNA_meshdata_types.h" #include "DNA_modifier_types.h" @@ -87,54 +88,17 @@ static void initData(ModifierData *md) #ifdef WITH_OCEANSIM OceanModifierData *omd = (OceanModifierData *)md; - /* Render resolution */ - omd->resolution = 7; - /* Display resolution for the non-render case */ - omd->viewport_resolution = 7; + BLI_assert(MEMCMP_STRUCT_AFTER_IS_ZERO(omd, modifier)); - omd->spatial_size = 50; - - omd->wave_alignment = 0.0; - omd->wind_velocity = 30.0; - - omd->damp = 0.5; - omd->smallest_wave = 0.01; - omd->wave_direction = 0.0; - omd->depth = 200.0; - - omd->wave_scale = 1.0; - - omd->chop_amount = 1.0; - - omd->foam_coverage = 0.0; - - omd->seed = 0; - omd->time = 1.0; - - omd->spectrum = MOD_OCEAN_SPECTRUM_PHILLIPS; - omd->sharpen_peak_jonswap = 0.0f; - omd->fetch_jonswap = 120.0f; - - omd->size = 1.0; - omd->repeat_x = 1; - omd->repeat_y = 1; + MEMCPY_STRUCT_AFTER(omd, DNA_struct_default_get(OceanModifierData), modifier); BKE_modifier_path_init(omd->cachepath, sizeof(omd->cachepath), "cache_ocean"); - omd->cached = 0; - omd->bakestart = 1; - omd->bakeend = 250; - omd->oceancache = NULL; - omd->foam_fade = 0.98; - omd->foamlayername[0] = '\0'; /* layer name empty by default */ - omd->spraylayername[0] = '\0'; /* layer name empty by default */ - omd->ocean = BKE_ocean_add(); BKE_ocean_init_from_modifier(omd->ocean, omd, omd->viewport_resolution); simulate_ocean_modifier(omd); #else /* WITH_OCEANSIM */ - /* unused */ - (void)md; + UNUSED_VARS(md); #endif /* WITH_OCEANSIM */ } diff --git a/source/blender/modifiers/intern/MOD_particleinstance.c b/source/blender/modifiers/intern/MOD_particleinstance.c index 1f9b7227caf..d5c1eb6d3be 100644 --- a/source/blender/modifiers/intern/MOD_particleinstance.c +++ b/source/blender/modifiers/intern/MOD_particleinstance.c @@ -32,6 +32,7 @@ #include "BLT_translation.h" +#include "DNA_defaults.h" #include "DNA_mesh_types.h" #include "DNA_meshdata_types.h" #include "DNA_screen_types.h" @@ -61,17 +62,9 @@ static void initData(ModifierData *md) { ParticleInstanceModifierData *pimd = (ParticleInstanceModifierData *)md; - pimd->flag = eParticleInstanceFlag_Parents | eParticleInstanceFlag_Unborn | - eParticleInstanceFlag_Alive | eParticleInstanceFlag_Dead; - pimd->psys = 1; - pimd->position = 1.0f; - pimd->axis = 2; - pimd->space = eParticleInstanceSpace_World; - pimd->particle_amount = 1.0f; - pimd->particle_offset = 0.0f; - - STRNCPY(pimd->index_layer_name, ""); - STRNCPY(pimd->value_layer_name, ""); + BLI_assert(MEMCMP_STRUCT_AFTER_IS_ZERO(pimd, modifier)); + + MEMCPY_STRUCT_AFTER(pimd, DNA_struct_default_get(ParticleInstanceModifierData), modifier); } static void requiredDataMask(Object *UNUSED(ob), diff --git a/source/blender/modifiers/intern/MOD_particlesystem.c b/source/blender/modifiers/intern/MOD_particlesystem.c index 92ab084097b..f9f186297fa 100644 --- a/source/blender/modifiers/intern/MOD_particlesystem.c +++ b/source/blender/modifiers/intern/MOD_particlesystem.c @@ -22,11 +22,13 @@ */ #include <stddef.h> +#include <string.h> #include "BLI_utildefines.h" #include "BLT_translation.h" +#include "DNA_defaults.h" #include "DNA_material_types.h" #include "DNA_mesh_types.h" #include "DNA_screen_types.h" @@ -54,10 +56,10 @@ static void initData(ModifierData *md) { ParticleSystemModifierData *psmd = (ParticleSystemModifierData *)md; - psmd->psys = NULL; - psmd->mesh_final = NULL; - psmd->mesh_original = NULL; - psmd->totdmvert = psmd->totdmedge = psmd->totdmface = 0; + + BLI_assert(MEMCMP_STRUCT_AFTER_IS_ZERO(psmd, modifier)); + + MEMCPY_STRUCT_AFTER(psmd, DNA_struct_default_get(ParticleSystemModifierData), modifier); } static void freeData(ModifierData *md) { diff --git a/source/blender/modifiers/intern/MOD_remesh.c b/source/blender/modifiers/intern/MOD_remesh.c index fe99cec23f9..6c2a358f8d3 100644 --- a/source/blender/modifiers/intern/MOD_remesh.c +++ b/source/blender/modifiers/intern/MOD_remesh.c @@ -29,6 +29,7 @@ #include "BLT_translation.h" +#include "DNA_defaults.h" #include "DNA_mesh_types.h" #include "DNA_meshdata_types.h" #include "DNA_modifier_types.h" @@ -63,14 +64,9 @@ static void initData(ModifierData *md) { RemeshModifierData *rmd = (RemeshModifierData *)md; - rmd->scale = 0.9; - rmd->depth = 4; - rmd->hermite_num = 1; - rmd->flag = MOD_REMESH_FLOOD_FILL; - rmd->mode = MOD_REMESH_VOXEL; - rmd->threshold = 1; - rmd->voxel_size = 0.1f; - rmd->adaptivity = 0.0f; + BLI_assert(MEMCMP_STRUCT_AFTER_IS_ZERO(rmd, modifier)); + + MEMCPY_STRUCT_AFTER(rmd, DNA_struct_default_get(RemeshModifierData), modifier); } #ifdef WITH_MOD_REMESH diff --git a/source/blender/modifiers/intern/MOD_screw.c b/source/blender/modifiers/intern/MOD_screw.c index 8c9af71c35b..d9ac54ebf11 100644 --- a/source/blender/modifiers/intern/MOD_screw.c +++ b/source/blender/modifiers/intern/MOD_screw.c @@ -31,6 +31,7 @@ #include "BLT_translation.h" +#include "DNA_defaults.h" #include "DNA_mesh_types.h" #include "DNA_meshdata_types.h" #include "DNA_object_types.h" @@ -54,6 +55,15 @@ #include "MOD_modifiertypes.h" #include "MOD_ui_common.h" +static void initData(ModifierData *md) +{ + ScrewModifierData *ltmd = (ScrewModifierData *)md; + + BLI_assert(MEMCMP_STRUCT_AFTER_IS_ZERO(ltmd, modifier)); + + MEMCPY_STRUCT_AFTER(ltmd, DNA_struct_default_get(ScrewModifierData), modifier); +} + #include "BLI_strict_flags.h" /* used for gathering edge connectivity */ @@ -177,19 +187,6 @@ static Mesh *mesh_remove_doubles_on_axis(Mesh *result, return result; } -static void initData(ModifierData *md) -{ - ScrewModifierData *ltmd = (ScrewModifierData *)md; - ltmd->ob_axis = NULL; - ltmd->angle = (float)(M_PI * 2.0); - ltmd->axis = 2; - ltmd->flag = MOD_SCREW_SMOOTH_SHADING; - ltmd->steps = 16; - ltmd->render_steps = 16; - ltmd->iter = 1; - ltmd->merge_dist = 0.01f; -} - static Mesh *modifyMesh(ModifierData *md, const ModifierEvalContext *ctx, Mesh *meshData) { Mesh *mesh = meshData; diff --git a/source/blender/modifiers/intern/MOD_shrinkwrap.c b/source/blender/modifiers/intern/MOD_shrinkwrap.c index 1f1aa375535..14014eab965 100644 --- a/source/blender/modifiers/intern/MOD_shrinkwrap.c +++ b/source/blender/modifiers/intern/MOD_shrinkwrap.c @@ -27,6 +27,7 @@ #include "BLT_translation.h" +#include "DNA_defaults.h" #include "DNA_mesh_types.h" #include "DNA_object_types.h" #include "DNA_screen_types.h" @@ -56,12 +57,10 @@ static bool dependsOnNormals(ModifierData *md); static void initData(ModifierData *md) { ShrinkwrapModifierData *smd = (ShrinkwrapModifierData *)md; - smd->shrinkType = MOD_SHRINKWRAP_NEAREST_SURFACE; - smd->shrinkOpts = MOD_SHRINKWRAP_PROJECT_ALLOW_POS_DIR; - smd->keepDist = 0.0f; - smd->target = NULL; - smd->auxTarget = NULL; + BLI_assert(MEMCMP_STRUCT_AFTER_IS_ZERO(smd, modifier)); + + MEMCPY_STRUCT_AFTER(smd, DNA_struct_default_get(ShrinkwrapModifierData), modifier); } static void requiredDataMask(Object *UNUSED(ob), diff --git a/source/blender/modifiers/intern/MOD_simpledeform.c b/source/blender/modifiers/intern/MOD_simpledeform.c index 456a686ebbb..00fca23299c 100644 --- a/source/blender/modifiers/intern/MOD_simpledeform.c +++ b/source/blender/modifiers/intern/MOD_simpledeform.c @@ -27,6 +27,7 @@ #include "BLT_translation.h" +#include "DNA_defaults.h" #include "DNA_mesh_types.h" #include "DNA_meshdata_types.h" #include "DNA_object_types.h" @@ -378,14 +379,9 @@ static void initData(ModifierData *md) { SimpleDeformModifierData *smd = (SimpleDeformModifierData *)md; - smd->mode = MOD_SIMPLEDEFORM_MODE_TWIST; - smd->axis = 0; - smd->deform_axis = 0; + BLI_assert(MEMCMP_STRUCT_AFTER_IS_ZERO(smd, modifier)); - smd->origin = NULL; - smd->factor = DEG2RADF(45.0f); - smd->limit[0] = 0.0f; - smd->limit[1] = 1.0f; + MEMCPY_STRUCT_AFTER(smd, DNA_struct_default_get(SimpleDeformModifierData), modifier); } static void requiredDataMask(Object *UNUSED(ob), diff --git a/source/blender/modifiers/intern/MOD_simulation.cc b/source/blender/modifiers/intern/MOD_simulation.cc index 63632c76584..8dc9a924981 100644 --- a/source/blender/modifiers/intern/MOD_simulation.cc +++ b/source/blender/modifiers/intern/MOD_simulation.cc @@ -32,6 +32,7 @@ #include "BLI_string.h" #include "BLI_utildefines.h" +#include "DNA_defaults.h" #include "DNA_mesh_types.h" #include "DNA_meshdata_types.h" #include "DNA_modifier_types.h" @@ -64,6 +65,15 @@ using blender::float3; +static void initData(ModifierData *md) +{ + SimulationModifierData *smd = (SimulationModifierData *)md; + + BLI_assert(MEMCMP_STRUCT_AFTER_IS_ZERO(smd, modifier)); + + MEMCPY_STRUCT_AFTER(smd, DNA_struct_default_get(SimulationModifierData), modifier); +} + static void updateDepsgraph(ModifierData *md, const ModifierUpdateDepsgraphContext *ctx) { SimulationModifierData *smd = reinterpret_cast<SimulationModifierData *>(md); @@ -201,7 +211,7 @@ ModifierTypeInfo modifierType_Simulation = { /* modifyPointCloud */ modifyPointCloud, /* modifyVolume */ NULL, - /* initData */ NULL, + /* initData */ initData, /* requiredDataMask */ NULL, /* freeData */ freeData, /* isDisabled */ isDisabled, diff --git a/source/blender/modifiers/intern/MOD_skin.c b/source/blender/modifiers/intern/MOD_skin.c index 42e3fba285c..16d92f8ac32 100644 --- a/source/blender/modifiers/intern/MOD_skin.c +++ b/source/blender/modifiers/intern/MOD_skin.c @@ -63,6 +63,7 @@ #include "BLT_translation.h" +#include "DNA_defaults.h" #include "DNA_mesh_types.h" #include "DNA_meshdata_types.h" #include "DNA_modifier_types.h" @@ -1925,12 +1926,12 @@ static void initData(ModifierData *md) { SkinModifierData *smd = (SkinModifierData *)md; - /* Enable in editmode by default */ - md->mode |= eModifierMode_Editmode; + BLI_assert(MEMCMP_STRUCT_AFTER_IS_ZERO(smd, modifier)); + + MEMCPY_STRUCT_AFTER(smd, DNA_struct_default_get(SkinModifierData), modifier); - smd->branch_smoothing = 0; - smd->flag = 0; - smd->symmetry_axes = MOD_SKIN_SYMM_X; + /* Enable in editmode by default. */ + md->mode |= eModifierMode_Editmode; } static Mesh *modifyMesh(ModifierData *md, const ModifierEvalContext *UNUSED(ctx), Mesh *mesh) diff --git a/source/blender/modifiers/intern/MOD_smooth.c b/source/blender/modifiers/intern/MOD_smooth.c index 7076721d8ce..f8e76d92615 100644 --- a/source/blender/modifiers/intern/MOD_smooth.c +++ b/source/blender/modifiers/intern/MOD_smooth.c @@ -29,6 +29,7 @@ #include "BLT_translation.h" +#include "DNA_defaults.h" #include "DNA_mesh_types.h" #include "DNA_meshdata_types.h" #include "DNA_screen_types.h" @@ -55,10 +56,9 @@ static void initData(ModifierData *md) { SmoothModifierData *smd = (SmoothModifierData *)md; - smd->fac = 0.5f; - smd->repeat = 1; - smd->flag = MOD_SMOOTH_X | MOD_SMOOTH_Y | MOD_SMOOTH_Z; - smd->defgrp_name[0] = '\0'; + BLI_assert(MEMCMP_STRUCT_AFTER_IS_ZERO(smd, modifier)); + + MEMCPY_STRUCT_AFTER(smd, DNA_struct_default_get(SmoothModifierData), modifier); } static bool isDisabled(const struct Scene *UNUSED(scene), diff --git a/source/blender/modifiers/intern/MOD_solidify.c b/source/blender/modifiers/intern/MOD_solidify.c index 82a293bce5c..17fde2c9b0e 100644 --- a/source/blender/modifiers/intern/MOD_solidify.c +++ b/source/blender/modifiers/intern/MOD_solidify.c @@ -27,6 +27,7 @@ #include "BLT_translation.h" +#include "DNA_defaults.h" #include "DNA_mesh_types.h" #include "DNA_screen_types.h" @@ -44,10 +45,6 @@ #include "MOD_solidify_util.h" -#ifdef __GNUC__ -# pragma GCC diagnostic error "-Wsign-conversion" -#endif - static bool dependsOnNormals(ModifierData *md) { const SolidifyModifierData *smd = (SolidifyModifierData *)md; @@ -60,16 +57,16 @@ static bool dependsOnNormals(ModifierData *md) static void initData(ModifierData *md) { SolidifyModifierData *smd = (SolidifyModifierData *)md; - smd->offset = 0.01f; - smd->offset_fac = -1.0f; - smd->flag = MOD_SOLIDIFY_RIM; - smd->mode = MOD_SOLIDIFY_MODE_EXTRUDE; - smd->nonmanifold_offset_mode = MOD_SOLIDIFY_NONMANIFOLD_OFFSET_MODE_CONSTRAINTS; - smd->nonmanifold_boundary_mode = MOD_SOLIDIFY_NONMANIFOLD_BOUNDARY_MODE_NONE; - smd->merge_tolerance = 0.0001f; - smd->bevel_convex = 0.0f; + + BLI_assert(MEMCMP_STRUCT_AFTER_IS_ZERO(smd, modifier)); + + MEMCPY_STRUCT_AFTER(smd, DNA_struct_default_get(SolidifyModifierData), modifier); } +#ifdef __GNUC__ +# pragma GCC diagnostic error "-Wsign-conversion" +#endif + static void requiredDataMask(Object *UNUSED(ob), ModifierData *md, CustomData_MeshMasks *r_cddata_masks) diff --git a/source/blender/modifiers/intern/MOD_subsurf.c b/source/blender/modifiers/intern/MOD_subsurf.c index 2fb98bd1def..f730ccf5e29 100644 --- a/source/blender/modifiers/intern/MOD_subsurf.c +++ b/source/blender/modifiers/intern/MOD_subsurf.c @@ -30,6 +30,7 @@ #include "BLT_translation.h" +#include "DNA_defaults.h" #include "DNA_mesh_types.h" #include "DNA_object_types.h" #include "DNA_scene_types.h" @@ -71,12 +72,9 @@ static void initData(ModifierData *md) { SubsurfModifierData *smd = (SubsurfModifierData *)md; - smd->levels = 1; - smd->renderLevels = 2; - smd->uv_smooth = SUBSURF_UV_SMOOTH_PRESERVE_CORNERS; - smd->boundary_smooth = SUBSURF_BOUNDARY_SMOOTH_ALL; - smd->quality = 3; - smd->flags |= (eSubsurfModifierFlag_UseCrease | eSubsurfModifierFlag_ControlEdges); + BLI_assert(MEMCMP_STRUCT_AFTER_IS_ZERO(smd, modifier)); + + MEMCPY_STRUCT_AFTER(smd, DNA_struct_default_get(SubsurfModifierData), modifier); } static void requiredDataMask(Object *UNUSED(ob), diff --git a/source/blender/modifiers/intern/MOD_surface.c b/source/blender/modifiers/intern/MOD_surface.c index 25499212bc5..3a702656138 100644 --- a/source/blender/modifiers/intern/MOD_surface.c +++ b/source/blender/modifiers/intern/MOD_surface.c @@ -27,6 +27,7 @@ #include "BLT_translation.h" +#include "DNA_defaults.h" #include "DNA_mesh_types.h" #include "DNA_meshdata_types.h" #include "DNA_object_types.h" @@ -59,10 +60,9 @@ static void initData(ModifierData *md) { SurfaceModifierData *surmd = (SurfaceModifierData *)md; - surmd->bvhtree = NULL; - surmd->mesh = NULL; - surmd->x = NULL; - surmd->v = NULL; + BLI_assert(MEMCMP_STRUCT_AFTER_IS_ZERO(surmd, modifier)); + + MEMCPY_STRUCT_AFTER(surmd, DNA_struct_default_get(SurfaceModifierData), modifier); } static void copyData(const ModifierData *md_src, ModifierData *md_dst, const int flag) diff --git a/source/blender/modifiers/intern/MOD_surfacedeform.c b/source/blender/modifiers/intern/MOD_surfacedeform.c index 8be95138511..7bd39126e44 100644 --- a/source/blender/modifiers/intern/MOD_surfacedeform.c +++ b/source/blender/modifiers/intern/MOD_surfacedeform.c @@ -26,6 +26,7 @@ #include "BLT_translation.h" +#include "DNA_defaults.h" #include "DNA_mesh_types.h" #include "DNA_meshdata_types.h" #include "DNA_object_types.h" @@ -150,11 +151,10 @@ enum { static void initData(ModifierData *md) { SurfaceDeformModifierData *smd = (SurfaceDeformModifierData *)md; - smd->target = NULL; - smd->verts = NULL; - smd->flags = 0; - smd->falloff = 4.0f; - smd->strength = 1.0f; + + BLI_assert(MEMCMP_STRUCT_AFTER_IS_ZERO(smd, modifier)); + + MEMCPY_STRUCT_AFTER(smd, DNA_struct_default_get(SurfaceDeformModifierData), modifier); } static void requiredDataMask(Object *UNUSED(ob), diff --git a/source/blender/modifiers/intern/MOD_triangulate.c b/source/blender/modifiers/intern/MOD_triangulate.c index 3b374948349..e65761a77be 100644 --- a/source/blender/modifiers/intern/MOD_triangulate.c +++ b/source/blender/modifiers/intern/MOD_triangulate.c @@ -18,12 +18,15 @@ * \ingroup modifiers */ +#include <string.h> + #include "MEM_guardedalloc.h" #include "BLI_utildefines.h" #include "BLT_translation.h" +#include "DNA_defaults.h" #include "DNA_mesh_types.h" #include "DNA_meshdata_types.h" #include "DNA_object_types.h" @@ -107,11 +110,12 @@ static void initData(ModifierData *md) { TriangulateModifierData *tmd = (TriangulateModifierData *)md; + BLI_assert(MEMCMP_STRUCT_AFTER_IS_ZERO(tmd, modifier)); + + MEMCPY_STRUCT_AFTER(tmd, DNA_struct_default_get(TriangulateModifierData), modifier); + /* Enable in editmode by default */ md->mode |= eModifierMode_Editmode; - tmd->quad_method = MOD_TRIANGULATE_QUAD_SHORTEDGE; - tmd->ngon_method = MOD_TRIANGULATE_NGON_BEAUTY; - tmd->min_vertices = 4; } static Mesh *modifyMesh(ModifierData *md, const ModifierEvalContext *UNUSED(ctx), Mesh *mesh) diff --git a/source/blender/modifiers/intern/MOD_uvproject.c b/source/blender/modifiers/intern/MOD_uvproject.c index 6ebced29920..66d408a7e4d 100644 --- a/source/blender/modifiers/intern/MOD_uvproject.c +++ b/source/blender/modifiers/intern/MOD_uvproject.c @@ -31,6 +31,7 @@ #include "BLT_translation.h" #include "DNA_camera_types.h" +#include "DNA_defaults.h" #include "DNA_mesh_types.h" #include "DNA_meshdata_types.h" #include "DNA_object_types.h" @@ -61,9 +62,9 @@ static void initData(ModifierData *md) { UVProjectModifierData *umd = (UVProjectModifierData *)md; - umd->num_projectors = 1; - umd->aspectx = umd->aspecty = 1.0f; - umd->scalex = umd->scaley = 1.0f; + BLI_assert(MEMCMP_STRUCT_AFTER_IS_ZERO(umd, modifier)); + + MEMCPY_STRUCT_AFTER(umd, DNA_struct_default_get(UVProjectModifierData), modifier); } static void requiredDataMask(Object *UNUSED(ob), diff --git a/source/blender/modifiers/intern/MOD_uvwarp.c b/source/blender/modifiers/intern/MOD_uvwarp.c index f0b0149a221..f70694d3148 100644 --- a/source/blender/modifiers/intern/MOD_uvwarp.c +++ b/source/blender/modifiers/intern/MOD_uvwarp.c @@ -27,6 +27,7 @@ #include "BLT_translation.h" +#include "DNA_defaults.h" #include "DNA_mesh_types.h" #include "DNA_meshdata_types.h" #include "DNA_object_types.h" @@ -63,10 +64,10 @@ static void uv_warp_from_mat4_pair(float uv_dst[2], static void initData(ModifierData *md) { UVWarpModifierData *umd = (UVWarpModifierData *)md; - umd->axis_u = 0; - umd->axis_v = 1; - copy_v2_fl(umd->center, 0.5f); - copy_v2_fl(umd->scale, 1.0f); + + BLI_assert(MEMCMP_STRUCT_AFTER_IS_ZERO(umd, modifier)); + + MEMCPY_STRUCT_AFTER(umd, DNA_struct_default_get(UVWarpModifierData), modifier); } static void requiredDataMask(Object *UNUSED(ob), diff --git a/source/blender/modifiers/intern/MOD_warp.c b/source/blender/modifiers/intern/MOD_warp.c index a55714e3d5e..7eb1851e08b 100644 --- a/source/blender/modifiers/intern/MOD_warp.c +++ b/source/blender/modifiers/intern/MOD_warp.c @@ -28,6 +28,7 @@ #include "BLT_translation.h" +#include "DNA_defaults.h" #include "DNA_mesh_types.h" #include "DNA_meshdata_types.h" #include "DNA_object_types.h" @@ -65,12 +66,11 @@ static void initData(ModifierData *md) { WarpModifierData *wmd = (WarpModifierData *)md; + BLI_assert(MEMCMP_STRUCT_AFTER_IS_ZERO(wmd, modifier)); + + MEMCPY_STRUCT_AFTER(wmd, DNA_struct_default_get(WarpModifierData), modifier); + wmd->curfalloff = BKE_curvemapping_add(1, 0.0f, 0.0f, 1.0f, 1.0f); - wmd->texture = NULL; - wmd->strength = 1.0f; - wmd->falloff_radius = 1.0f; - wmd->falloff_type = eWarp_Falloff_Smooth; - wmd->flag = 0; } static void copyData(const ModifierData *md, ModifierData *target, const int flag) diff --git a/source/blender/modifiers/intern/MOD_wave.c b/source/blender/modifiers/intern/MOD_wave.c index 580697486b3..3862b627a56 100644 --- a/source/blender/modifiers/intern/MOD_wave.c +++ b/source/blender/modifiers/intern/MOD_wave.c @@ -27,6 +27,7 @@ #include "BLT_translation.h" +#include "DNA_defaults.h" #include "DNA_mesh_types.h" #include "DNA_meshdata_types.h" #include "DNA_object_types.h" @@ -63,21 +64,9 @@ static void initData(ModifierData *md) { WaveModifierData *wmd = (WaveModifierData *)md; // whadya know, moved here from Iraq - wmd->flag |= (MOD_WAVE_X | MOD_WAVE_Y | MOD_WAVE_CYCL | MOD_WAVE_NORM_X | MOD_WAVE_NORM_Y | - MOD_WAVE_NORM_Z); - - wmd->objectcenter = NULL; - wmd->texture = NULL; - wmd->map_object = NULL; - wmd->height = 0.5f; - wmd->width = 1.5f; - wmd->speed = 0.25f; - wmd->narrow = 1.5f; - wmd->lifetime = 0.0f; - wmd->damp = 10.0f; - wmd->falloff = 0.0f; - wmd->texmapping = MOD_DISP_MAP_LOCAL; - wmd->defgrp_name[0] = 0; + BLI_assert(MEMCMP_STRUCT_AFTER_IS_ZERO(wmd, modifier)); + + MEMCPY_STRUCT_AFTER(wmd, DNA_struct_default_get(WaveModifierData), modifier); } static bool dependsOnTime(ModifierData *UNUSED(md)) diff --git a/source/blender/modifiers/intern/MOD_weighted_normal.c b/source/blender/modifiers/intern/MOD_weighted_normal.c index 2d8669be8e5..461217fb4cb 100644 --- a/source/blender/modifiers/intern/MOD_weighted_normal.c +++ b/source/blender/modifiers/intern/MOD_weighted_normal.c @@ -26,6 +26,7 @@ #include "BLT_translation.h" +#include "DNA_defaults.h" #include "DNA_mesh_types.h" #include "DNA_meshdata_types.h" #include "DNA_object_types.h" @@ -686,10 +687,10 @@ static Mesh *modifyMesh(ModifierData *md, const ModifierEvalContext *ctx, Mesh * static void initData(ModifierData *md) { WeightedNormalModifierData *wnmd = (WeightedNormalModifierData *)md; - wnmd->mode = MOD_WEIGHTEDNORMAL_MODE_FACE; - wnmd->weight = 50; - wnmd->thresh = 1e-2f; - wnmd->flag = 0; + + BLI_assert(MEMCMP_STRUCT_AFTER_IS_ZERO(wnmd, modifier)); + + MEMCPY_STRUCT_AFTER(wnmd, DNA_struct_default_get(WeightedNormalModifierData), modifier); } static void requiredDataMask(Object *UNUSED(ob), diff --git a/source/blender/modifiers/intern/MOD_weightvgedit.c b/source/blender/modifiers/intern/MOD_weightvgedit.c index e2a08f88ec1..147322180ae 100644 --- a/source/blender/modifiers/intern/MOD_weightvgedit.c +++ b/source/blender/modifiers/intern/MOD_weightvgedit.c @@ -21,6 +21,8 @@ * \ingroup modifiers */ +#include <string.h> + #include "BLI_utildefines.h" #include "BLI_ghash.h" @@ -30,6 +32,7 @@ #include "BLT_translation.h" #include "DNA_color_types.h" /* CurveMapping. */ +#include "DNA_defaults.h" #include "DNA_mesh_types.h" #include "DNA_meshdata_types.h" #include "DNA_modifier_types.h" @@ -67,19 +70,13 @@ static void initData(ModifierData *md) { WeightVGEditModifierData *wmd = (WeightVGEditModifierData *)md; - wmd->edit_flags = 0; - wmd->falloff_type = MOD_WVG_MAPPING_NONE; - wmd->default_weight = 0.0f; - wmd->cmap_curve = BKE_curvemapping_add(1, 0.0, 0.0, 1.0, 1.0); - BKE_curvemapping_init(wmd->cmap_curve); + BLI_assert(MEMCMP_STRUCT_AFTER_IS_ZERO(wmd, modifier)); - wmd->rem_threshold = 0.01f; - wmd->add_threshold = 0.01f; + MEMCPY_STRUCT_AFTER(wmd, DNA_struct_default_get(WeightVGEditModifierData), modifier); - wmd->mask_constant = 1.0f; - wmd->mask_tex_use_channel = MOD_WVG_MASK_TEX_USE_INT; /* Use intensity by default. */ - wmd->mask_tex_mapping = MOD_DISP_MAP_LOCAL; + wmd->cmap_curve = BKE_curvemapping_add(1, 0.0, 0.0, 1.0, 1.0); + BKE_curvemapping_init(wmd->cmap_curve); } static void freeData(ModifierData *md) diff --git a/source/blender/modifiers/intern/MOD_weightvgmix.c b/source/blender/modifiers/intern/MOD_weightvgmix.c index 1e60afc2e84..2eb1003fe41 100644 --- a/source/blender/modifiers/intern/MOD_weightvgmix.c +++ b/source/blender/modifiers/intern/MOD_weightvgmix.c @@ -28,6 +28,7 @@ #include "BLT_translation.h" +#include "DNA_defaults.h" #include "DNA_mesh_types.h" #include "DNA_meshdata_types.h" #include "DNA_modifier_types.h" @@ -131,14 +132,9 @@ static void initData(ModifierData *md) { WeightVGMixModifierData *wmd = (WeightVGMixModifierData *)md; - wmd->default_weight_a = 0.0f; - wmd->default_weight_b = 0.0f; - wmd->mix_mode = MOD_WVG_MIX_SET; - wmd->mix_set = MOD_WVG_SET_AND; + BLI_assert(MEMCMP_STRUCT_AFTER_IS_ZERO(wmd, modifier)); - wmd->mask_constant = 1.0f; - wmd->mask_tex_use_channel = MOD_WVG_MASK_TEX_USE_INT; /* Use intensity by default. */ - wmd->mask_tex_mapping = MOD_DISP_MAP_LOCAL; + MEMCPY_STRUCT_AFTER(wmd, DNA_struct_default_get(WeightVGMixModifierData), modifier); } static void requiredDataMask(Object *UNUSED(ob), diff --git a/source/blender/modifiers/intern/MOD_weightvgproximity.c b/source/blender/modifiers/intern/MOD_weightvgproximity.c index 68a9ecac887..fb4b0dc93aa 100644 --- a/source/blender/modifiers/intern/MOD_weightvgproximity.c +++ b/source/blender/modifiers/intern/MOD_weightvgproximity.c @@ -31,6 +31,7 @@ #include "BLT_translation.h" +#include "DNA_defaults.h" #include "DNA_mesh_types.h" #include "DNA_meshdata_types.h" #include "DNA_modifier_types.h" @@ -316,15 +317,9 @@ static void initData(ModifierData *md) { WeightVGProximityModifierData *wmd = (WeightVGProximityModifierData *)md; - wmd->proximity_mode = MOD_WVG_PROXIMITY_OBJECT; - wmd->proximity_flags = MOD_WVG_PROXIMITY_GEOM_VERTS; + BLI_assert(MEMCMP_STRUCT_AFTER_IS_ZERO(wmd, modifier)); - wmd->falloff_type = MOD_WVG_MAPPING_NONE; - - wmd->mask_constant = 1.0f; - wmd->mask_tex_use_channel = MOD_WVG_MASK_TEX_USE_INT; /* Use intensity by default. */ - wmd->mask_tex_mapping = MOD_DISP_MAP_LOCAL; - wmd->max_dist = 1.0f; /* vert arbitrary distance, but don't use 0 */ + MEMCPY_STRUCT_AFTER(wmd, DNA_struct_default_get(WeightVGProximityModifierData), modifier); } static void requiredDataMask(Object *UNUSED(ob), diff --git a/source/blender/modifiers/intern/MOD_weld.c b/source/blender/modifiers/intern/MOD_weld.c index 46e4f147e20..02bd890b205 100644 --- a/source/blender/modifiers/intern/MOD_weld.c +++ b/source/blender/modifiers/intern/MOD_weld.c @@ -42,6 +42,7 @@ #include "BLT_translation.h" +#include "DNA_defaults.h" #include "DNA_mesh_types.h" #include "DNA_meshdata_types.h" #include "DNA_modifier_types.h" @@ -1913,8 +1914,9 @@ static void initData(ModifierData *md) { WeldModifierData *wmd = (WeldModifierData *)md; - wmd->merge_dist = 0.001f; - wmd->defgrp_name[0] = '\0'; + BLI_assert(MEMCMP_STRUCT_AFTER_IS_ZERO(wmd, modifier)); + + MEMCPY_STRUCT_AFTER(wmd, DNA_struct_default_get(WeldModifierData), modifier); } static void requiredDataMask(Object *UNUSED(ob), diff --git a/source/blender/modifiers/intern/MOD_wireframe.c b/source/blender/modifiers/intern/MOD_wireframe.c index a24ea8b8b0f..8cf94f2ca08 100644 --- a/source/blender/modifiers/intern/MOD_wireframe.c +++ b/source/blender/modifiers/intern/MOD_wireframe.c @@ -24,6 +24,7 @@ #include "BLT_translation.h" +#include "DNA_defaults.h" #include "DNA_mesh_types.h" #include "DNA_object_types.h" #include "DNA_screen_types.h" @@ -47,9 +48,10 @@ static void initData(ModifierData *md) { WireframeModifierData *wmd = (WireframeModifierData *)md; - wmd->offset = 0.02f; - wmd->flag = MOD_WIREFRAME_REPLACE | MOD_WIREFRAME_OFS_EVEN; - wmd->crease_weight = 1.0f; + + BLI_assert(MEMCMP_STRUCT_AFTER_IS_ZERO(wmd, modifier)); + + MEMCPY_STRUCT_AFTER(wmd, DNA_struct_default_get(WireframeModifierData), modifier); } static void requiredDataMask(Object *UNUSED(ob), |