Fix for own mistake: arc diff swallowed a commit somehow, breaking
[blender.git] / source / blender / makesdna / DNA_cloth_types.h
1 /*
2  * ***** BEGIN GPL LICENSE BLOCK *****
3  *
4  * This program is free software; you can redistribute it and/or
5  * modify it under the terms of the GNU General Public License
6  * as published by the Free Software Foundation; either version 2
7  * of the License, or (at your option) any later version.
8  *
9  * This program is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12  * GNU General Public License for more details.
13  *
14  * You should have received a copy of the GNU General Public License
15  * along with this program; if not, write to the Free Software Foundation,
16  * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
17  *
18  * The Original Code is Copyright (C) 2006 by NaN Holding BV.
19  * All rights reserved.
20  *
21  * The Original Code is: all of this file.
22  *
23  * Contributor(s): Daniel (Genscher)
24  *
25  * ***** END GPL LICENSE BLOCK *****
26  */
27
28 /** \file DNA_cloth_types.h
29  *  \ingroup DNA
30  */
31
32 #ifndef __DNA_CLOTH_TYPES_H__
33 #define __DNA_CLOTH_TYPES_H__
34
35 /**
36  * This struct contains all the global data required to run a simulation.
37  * At the time of this writing, this structure contains data appropriate
38  * to run a simulation as described in Deformation Constraints in a
39  * Mass-Spring Model to Describe Rigid Cloth Behavior by Xavier Provot.
40  *
41  * I've tried to keep similar, if not exact names for the variables as
42  * are presented in the paper.  Where I've changed the concept slightly,
43  * as in stepsPerFrame comapred to the time step in the paper, I've used
44  * variables with different names to minimize confusion.
45  */
46
47 typedef struct ClothSimSettings {
48         struct  LinkNode *cache; /* UNUSED atm */
49         float   mingoal;        /* see SB */
50         float   Cdis;           /* Mechanical damping of springs.               */
51         float   Cvi;            /* Viscous/fluid damping.                       */
52         float   gravity[3];     /* Gravity/external force vector.               */
53         float   dt;             /* This is the duration of our time step, computed.     */
54         float   mass;           /* The mass of the entire cloth.                */
55         float   structural;     /* Structural spring stiffness.                 */
56         float   shear;          /* Shear spring stiffness.                      */
57         float   bending;        /* Flexion spring stiffness.                    */
58         float   max_bend;       /* max bending scaling value, min is "bending" */
59         float   max_struct;     /* max structural scaling value, min is "structural" */
60         float   max_shear;      /* max shear scaling value, UNUSED */
61         float   max_sewing;     /* max sewing force */
62         float   avg_spring_len; /* used for normalized springs */
63         float   timescale; /* parameter how fast cloth runs */
64         float   maxgoal;        /* see SB */
65         float   eff_force_scale;/* Scaling of effector forces (see softbody_calc_forces).*/
66         float   eff_wind_scale; /* Scaling of effector wind (see softbody_calc_forces). */
67         float   sim_time_old;
68         float   defgoal;
69         float   goalspring;
70         float   goalfrict;
71         float   velocity_smooth; /* smoothing of velocities for hair */
72         float   collider_friction; /* friction with colliders */
73         float   vel_damping; /* damp the velocity to speed up getting to the resting position */
74         float   shrink_min;  /* min amount to shrink cloth by 0.0f (no shrink) - 1.0f (shrink to nothing) */
75         float   shrink_max;  /* max amount to shrink cloth by 0.0f (no shrink) - 1.0f (shrink to nothing) */
76
77         int     stepsPerFrame;  /* Number of time steps per frame.              */
78         int     flags;          /* flags, see CSIMSETT_FLAGS enum above.        */
79         int     preroll;        /* How many frames of simulation to do before we start. */
80         int     maxspringlen;   /* in percent!; if tearing enabled, a spring will get cut */
81         short   solver_type;    /* which solver should be used?         txold   */
82         short   vgroup_bend;    /* vertex group for scaling bending stiffness */
83         short   vgroup_mass;    /* optional vertexgroup name for assigning weight.*/
84         short   vgroup_struct;  /* vertex group for scaling structural stiffness */
85         short   vgroup_shrink;  /* vertex group for shrinking cloth */
86         short   shapekey_rest;  /* vertex group for scaling structural stiffness */
87         short   presets; /* used for presets on GUI */
88         short   reset;
89         char    pad[4];
90
91         struct EffectorWeights *effector_weights;
92 } ClothSimSettings;
93
94
95 typedef struct ClothCollSettings {
96         struct  LinkNode *collision_list; /* e.g. pointer to temp memory for collisions */
97         float   epsilon;                /* min distance for collisions.         */
98         float   self_friction;          /* Fiction/damping with self contact. */
99         float   friction;               /* Friction/damping applied on contact with other object.*/
100         float   selfepsilon;            /* for selfcollision */
101         float repel_force, distance_repel;
102         int     flags;                  /* collision flags defined in BKE_cloth.h */
103         short   self_loop_count;        /* How many iterations for the selfcollision loop       */
104         short   loop_count;             /* How many iterations for the collision loop.          */
105         struct Group *group;    /* Only use colliders from this group of objects */
106         short   vgroup_selfcol; /* vgroup to paint which vertices are used for self collisions */
107         short pad;
108         int pad2;
109 } ClothCollSettings;
110
111
112 #endif