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 20:56:34 +0300
committerHans Goudey <h.goudey@me.com>2020-10-01 20:56:34 +0300
commitc3238bd50010e43ad97edb07ca1b2fe04ddf7f45 (patch)
treefa43f6fba52cde9fad9c4931c970861b675e7ae9 /source/blender/makesdna
parent4c0ef4f788a1037888d5cb0a87ac23d6fe84573e (diff)
Cleanup: Use DNA defaults for cloth modifier
Followup for rB8398050695 This requires moving a few enum definitions to DNA instead of BKE, and adding default definitions for the two structs the cloth modifier where the cloth modifier stores its settings. The defaults are also reordered to be consistent with the order of each item in the struct.
Diffstat (limited to 'source/blender/makesdna')
-rw-r--r--source/blender/makesdna/DNA_cloth_types.h41
-rw-r--r--source/blender/makesdna/DNA_modifier_defaults.h97
-rw-r--r--source/blender/makesdna/intern/dna_defaults.c9
3 files changed, 144 insertions, 3 deletions
diff --git a/source/blender/makesdna/DNA_cloth_types.h b/source/blender/makesdna/DNA_cloth_types.h
index bc6991b3249..a4c0d9a4c40 100644
--- a/source/blender/makesdna/DNA_cloth_types.h
+++ b/source/blender/makesdna/DNA_cloth_types.h
@@ -177,6 +177,41 @@ typedef struct ClothSimSettings {
} ClothSimSettings;
+/* SIMULATION FLAGS: goal flags,.. */
+/* These are the bits used in SimSettings.flags. */
+typedef enum {
+ /** Object is only collision object, no cloth simulation is done. */
+ CLOTH_SIMSETTINGS_FLAG_COLLOBJ = (1 << 2),
+ /** DEPRECATED, for versioning only. */
+ CLOTH_SIMSETTINGS_FLAG_GOAL = (1 << 3),
+ /** True if tearing is enabled. */
+ CLOTH_SIMSETTINGS_FLAG_TEARING = (1 << 4),
+ /** True if pressure sim is enabled. */
+ CLOTH_SIMSETTINGS_FLAG_PRESSURE = (1 << 5),
+ /** Use the user defined target volume. */
+ CLOTH_SIMSETTINGS_FLAG_PRESSURE_VOL = (1 << 6),
+ /** True if internal spring generation is enabled. */
+ CLOTH_SIMSETTINGS_FLAG_INTERNAL_SPRINGS = (1 << 7),
+ /** DEPRECATED, for versioning only. */
+ CLOTH_SIMSETTINGS_FLAG_SCALING = (1 << 8),
+ /** Require internal springs to be created between points with opposite normals. */
+ CLOTH_SIMSETTINGS_FLAG_INTERNAL_SPRINGS_NORMAL = (1 << 9),
+ /** Edit cache in edit-mode. */
+ /* CLOTH_SIMSETTINGS_FLAG_CCACHE_EDIT = (1 << 12), */ /* UNUSED */
+ /** Don't allow spring compression. */
+ CLOTH_SIMSETTINGS_FLAG_RESIST_SPRING_COMPRESS = (1 << 13),
+ /** Pull ends of loose edges together. */
+ CLOTH_SIMSETTINGS_FLAG_SEW = (1 << 14),
+ /** Make simulation respect deformations in the base object. */
+ CLOTH_SIMSETTINGS_FLAG_DYNAMIC_BASEMESH = (1 << 15),
+} CLOTH_SIMSETTINGS_FLAGS;
+
+/* ClothSimSettings.bending_model. */
+typedef enum {
+ CLOTH_BENDING_LINEAR = 0,
+ CLOTH_BENDING_ANGULAR = 1,
+} CLOTH_BENDING_MODEL;
+
typedef struct ClothCollSettings {
/** E.g. pointer to temp memory for collisions. */
struct LinkNode *collision_list;
@@ -209,3 +244,9 @@ typedef struct ClothCollSettings {
/** Impulse clamp for self collisions. */
float self_clamp;
} ClothCollSettings;
+
+/* COLLISION FLAGS */
+typedef enum {
+ CLOTH_COLLSETTINGS_FLAG_ENABLED = (1 << 1), /* enables cloth - object collisions */
+ CLOTH_COLLSETTINGS_FLAG_SELF = (1 << 2), /* enables selfcollisions */
+} CLOTH_COLLISIONSETTINGS_FLAGS;
diff --git a/source/blender/makesdna/DNA_modifier_defaults.h b/source/blender/makesdna/DNA_modifier_defaults.h
index 400e077e892..5f46d4f5cef 100644
--- a/source/blender/makesdna/DNA_modifier_defaults.h
+++ b/source/blender/makesdna/DNA_modifier_defaults.h
@@ -101,7 +101,102 @@
.type = MOD_CAST_TYPE_SPHERE, \
}
-/* Cloth modifier skipped for now. */
+#define _DNA_DEFAULT_ClothSimSettings \
+ { \
+ .cache = NULL, \
+ .mingoal = 0.0f, \
+ .Cvi = 1.0f, \
+ .gravity = {0.0f, 0.0f, -9.81f}, \
+ .dt = 0.0f, \
+ .mass = 0.3f, \
+ .shear = 5.0f, \
+ .bending = 0.5f, \
+ .max_bend = 0.5f, \
+ .max_shear = 5.0f, \
+ .max_sewing = 0.0f, \
+ .avg_spring_len = 0.0f, \
+ .timescale = 1.0f, \
+ .time_scale = 1.0f, \
+ .maxgoal = 1.0f, \
+ .eff_force_scale = 1000.0f, \
+ .eff_wind_scale = 250.0f, \
+ .sim_time_old = 0.0f, \
+ .defgoal = 0.0f, \
+ .goalspring = 1.0f, \
+ .goalfrict = 0.0f, \
+ .velocity_smooth = 0.0f, \
+ .density_target = 0.0f, \
+ .density_strength = 0.0f, \
+ .collider_friction = 0.0f, \
+ .shrink_min = 0.0f, \
+ .shrink_max = 0.0f, \
+ .uniform_pressure_force = 0.0f, \
+ .target_volume = 0.0f, \
+ .pressure_factor = 1.0f, \
+ .fluid_density = 0.0f, \
+ .vgroup_pressure = 0, \
+ .bending_damping = 0.5f, \
+ .voxel_cell_size = 0.1f, \
+ .stepsPerFrame = 5, \
+ .flags = CLOTH_SIMSETTINGS_FLAG_INTERNAL_SPRINGS_NORMAL, \
+ .maxspringlen = 10, \
+ .solver_type = 0, \
+ .vgroup_bend = 0, \
+ .vgroup_mass = 0, \
+ .vgroup_struct = 0, \
+ .vgroup_shrink = 0, \
+ .shapekey_rest = 0, \
+ .presets = 2, \
+ .reset = 0, \
+ .effector_weights = NULL, \
+ .bending_model = CLOTH_BENDING_ANGULAR, \
+ .vgroup_shear = 0, \
+ .tension = 15.0f , \
+ .compression = 15.0f, \
+ .max_tension = 15.0f, \
+ .max_compression = 15.0f, \
+ .tension_damp = 5.0f, \
+ .compression_damp = 5.0f, \
+ .shear_damp = 5.0f, \
+ .internal_spring_max_length = 0.0f, \
+ .internal_spring_max_diversion = M_PI / 4.0f, \
+ .vgroup_intern = 0, \
+ .internal_tension = 15.0f, \
+ .internal_compression = 15.0f, \
+ .max_internal_tension = 15.0f, \
+ .max_internal_compression = 15.0f, \
+ }
+
+#define _DNA_DEFAULT_ClothCollSettings \
+ { \
+ .collision_list = NULL, \
+ .epsilon = 0.015f, \
+ .self_friction = 5.0f, \
+ .friction = 5.0f, \
+ .damping = 0.0f, \
+ .selfepsilon = 0.015f, \
+ .flags = CLOTH_COLLSETTINGS_FLAG_ENABLED, \
+ .loop_count = 2, \
+ .group = NULL, \
+ .vgroup_selfcol = 0, \
+ .clamp = 0.0f, \
+ .self_clamp = 0.0f, \
+ }
+
+#define _DNA_DEFAULT_ClothModifierData \
+ { \
+ .clothObject = NULL, \
+ .sim_parms = NULL, \
+ .coll_parms = NULL, \
+ .point_cache = NULL, \
+ .ptcaches = {NULL, NULL}, \
+ .hairdata = NULL, \
+ .hair_grid_min = {0.0f, 0.0f, 0.0f}, \
+ .hair_grid_max = {0.0f, 0.0f, 0.0f}, \
+ .hair_grid_res = {0, 0, 0}, \
+ .hair_grid_cellsize = 0.0f, \
+ .solver_result = NULL, \
+ }
#define _DNA_DEFAULT_CollisionModifierData \
{ \
diff --git a/source/blender/makesdna/intern/dna_defaults.c b/source/blender/makesdna/intern/dna_defaults.c
index f2498325f3d..6fff2d33ac8 100644
--- a/source/blender/makesdna/intern/dna_defaults.c
+++ b/source/blender/makesdna/intern/dna_defaults.c
@@ -86,6 +86,7 @@
#include "DNA_brush_types.h"
#include "DNA_cachefile_types.h"
#include "DNA_camera_types.h"
+#include "DNA_cloth_types.h"
#include "DNA_curve_types.h"
#include "DNA_hair_types.h"
#include "DNA_image_types.h"
@@ -208,7 +209,9 @@ 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(ClothSimSettings);
+SDNA_DEFAULT_DECL_STRUCT(ClothCollSettings);
+SDNA_DEFAULT_DECL_STRUCT(ClothModifierData);
SDNA_DEFAULT_DECL_STRUCT(CollisionModifierData);
SDNA_DEFAULT_DECL_STRUCT(CorrectiveSmoothModifierData);
SDNA_DEFAULT_DECL_STRUCT(CurveModifierData);
@@ -389,7 +392,9 @@ const void *DNA_default_table[SDNA_TYPE_MAX] = {
SDNA_DEFAULT_DECL(BooleanModifierData),
SDNA_DEFAULT_DECL(BuildModifierData),
SDNA_DEFAULT_DECL(CastModifierData),
- /* Cloth modifier skipped for now. */
+ SDNA_DEFAULT_DECL(ClothSimSettings),
+ SDNA_DEFAULT_DECL(ClothCollSettings),
+ SDNA_DEFAULT_DECL(ClothModifierData),
SDNA_DEFAULT_DECL(CollisionModifierData),
SDNA_DEFAULT_DECL(CorrectiveSmoothModifierData),
SDNA_DEFAULT_DECL(CurveModifierData),