Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHans Goudey <h.goudey@me.com>2020-10-01 17:38:00 +0300
committerHans Goudey <h.goudey@me.com>2020-10-01 17:38:00 +0300
commit83980506957cd4e31e8dc7041672efb256b5c28c (patch)
tree15224c5527a82ee5db618a28bbd3e0c178e6095e /source/blender
parent551204a17f14b94b4e222546231f4e5846762ce7 (diff)
Use DNA defaults system for modifiers
As noted in T80164, there are quite a few area of Blender where the "Reset to Default Value" operator in button context menus doesn't work. Modifiers are one of them, because the DNA defaults system was never set up for them. Additionally, this should make modifier versioning easier. Whenever a new field is added it should be automatically initialized to the default value. I had to make some ordering changes in the following modifiers to work around an error with `-Wsign-conversion` in the macros: - Solidify Modifier - Corrective Smooth Modifier - Screw Modifier Some modifiers are special cases and are skipped in this commit: - Data Transfer Modifier - Cloth Modifier - Fluid Modifier - Softbody Modifier Differential Revision: https://developer.blender.org/D8747
Diffstat (limited to 'source/blender')
-rw-r--r--source/blender/makesdna/DNA_modifier_defaults.h728
-rw-r--r--source/blender/makesdna/intern/CMakeLists.txt1
-rw-r--r--source/blender/makesdna/intern/dna_defaults.c117
-rw-r--r--source/blender/makesrna/intern/rna_modifier.c35
-rw-r--r--source/blender/modifiers/CMakeLists.txt1
-rw-r--r--source/blender/modifiers/intern/MOD_armature.c5
-rw-r--r--source/blender/modifiers/intern/MOD_array.c17
-rw-r--r--source/blender/modifiers/intern/MOD_bevel.c21
-rw-r--r--source/blender/modifiers/intern/MOD_boolean.c8
-rw-r--r--source/blender/modifiers/intern/MOD_build.c6
-rw-r--r--source/blender/modifiers/intern/MOD_cast.c11
-rw-r--r--source/blender/modifiers/intern/MOD_collision.c14
-rw-r--r--source/blender/modifiers/intern/MOD_correctivesmooth.c16
-rw-r--r--source/blender/modifiers/intern/MOD_curve.c5
-rw-r--r--source/blender/modifiers/intern/MOD_decimate.c7
-rw-r--r--source/blender/modifiers/intern/MOD_displace.c9
-rw-r--r--source/blender/modifiers/intern/MOD_dynamicpaint.c8
-rw-r--r--source/blender/modifiers/intern/MOD_edgesplit.c7
-rw-r--r--source/blender/modifiers/intern/MOD_explode.c6
-rw-r--r--source/blender/modifiers/intern/MOD_hook.c8
-rw-r--r--source/blender/modifiers/intern/MOD_laplaciandeform.c11
-rw-r--r--source/blender/modifiers/intern/MOD_laplaciansmooth.c11
-rw-r--r--source/blender/modifiers/intern/MOD_lattice.c6
-rw-r--r--source/blender/modifiers/intern/MOD_mask.cc12
-rw-r--r--source/blender/modifiers/intern/MOD_meshcache.c12
-rw-r--r--source/blender/modifiers/intern/MOD_meshdeform.c5
-rw-r--r--source/blender/modifiers/intern/MOD_meshsequencecache.c11
-rw-r--r--source/blender/modifiers/intern/MOD_mirror.c7
-rw-r--r--source/blender/modifiers/intern/MOD_multires.c12
-rw-r--r--source/blender/modifiers/intern/MOD_normal_edit.c7
-rw-r--r--source/blender/modifiers/intern/MOD_ocean.c44
-rw-r--r--source/blender/modifiers/intern/MOD_particleinstance.c15
-rw-r--r--source/blender/modifiers/intern/MOD_particlesystem.c10
-rw-r--r--source/blender/modifiers/intern/MOD_remesh.c12
-rw-r--r--source/blender/modifiers/intern/MOD_screw.c23
-rw-r--r--source/blender/modifiers/intern/MOD_shrinkwrap.c9
-rw-r--r--source/blender/modifiers/intern/MOD_simpledeform.c10
-rw-r--r--source/blender/modifiers/intern/MOD_simulation.cc12
-rw-r--r--source/blender/modifiers/intern/MOD_skin.c11
-rw-r--r--source/blender/modifiers/intern/MOD_smooth.c8
-rw-r--r--source/blender/modifiers/intern/MOD_solidify.c21
-rw-r--r--source/blender/modifiers/intern/MOD_subsurf.c10
-rw-r--r--source/blender/modifiers/intern/MOD_surface.c8
-rw-r--r--source/blender/modifiers/intern/MOD_surfacedeform.c10
-rw-r--r--source/blender/modifiers/intern/MOD_triangulate.c10
-rw-r--r--source/blender/modifiers/intern/MOD_uvproject.c7
-rw-r--r--source/blender/modifiers/intern/MOD_uvwarp.c9
-rw-r--r--source/blender/modifiers/intern/MOD_warp.c10
-rw-r--r--source/blender/modifiers/intern/MOD_wave.c19
-rw-r--r--source/blender/modifiers/intern/MOD_weighted_normal.c9
-rw-r--r--source/blender/modifiers/intern/MOD_weightvgedit.c17
-rw-r--r--source/blender/modifiers/intern/MOD_weightvgmix.c10
-rw-r--r--source/blender/modifiers/intern/MOD_weightvgproximity.c11
-rw-r--r--source/blender/modifiers/intern/MOD_weld.c6
-rw-r--r--source/blender/modifiers/intern/MOD_wireframe.c8
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),