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:
-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),