diff options
Diffstat (limited to 'source/blender/makesdna/DNA_modifier_types.h')
-rw-r--r-- | source/blender/makesdna/DNA_modifier_types.h | 2614 |
1 files changed, 1306 insertions, 1308 deletions
diff --git a/source/blender/makesdna/DNA_modifier_types.h b/source/blender/makesdna/DNA_modifier_types.h index 0ee58b5397b..1b85fb26c0e 100644 --- a/source/blender/makesdna/DNA_modifier_types.h +++ b/source/blender/makesdna/DNA_modifier_types.h @@ -33,1896 +33,1894 @@ struct Scene; struct Subdiv; typedef enum ModifierType { - eModifierType_None = 0, - eModifierType_Subsurf = 1, - eModifierType_Lattice = 2, - eModifierType_Curve = 3, - eModifierType_Build = 4, - eModifierType_Mirror = 5, - eModifierType_Decimate = 6, - eModifierType_Wave = 7, - eModifierType_Armature = 8, - eModifierType_Hook = 9, - eModifierType_Softbody = 10, - eModifierType_Boolean = 11, - eModifierType_Array = 12, - eModifierType_EdgeSplit = 13, - eModifierType_Displace = 14, - eModifierType_UVProject = 15, - eModifierType_Smooth = 16, - eModifierType_Cast = 17, - eModifierType_MeshDeform = 18, - eModifierType_ParticleSystem = 19, - eModifierType_ParticleInstance = 20, - eModifierType_Explode = 21, - eModifierType_Cloth = 22, - eModifierType_Collision = 23, - eModifierType_Bevel = 24, - eModifierType_Shrinkwrap = 25, - eModifierType_Fluidsim = 26, - eModifierType_Mask = 27, - eModifierType_SimpleDeform = 28, - eModifierType_Multires = 29, - eModifierType_Surface = 30, - eModifierType_Smoke = 31, - eModifierType_ShapeKey = 32, - eModifierType_Solidify = 33, - eModifierType_Screw = 34, - eModifierType_Warp = 35, - eModifierType_WeightVGEdit = 36, - eModifierType_WeightVGMix = 37, - eModifierType_WeightVGProximity = 38, - eModifierType_Ocean = 39, - eModifierType_DynamicPaint = 40, - eModifierType_Remesh = 41, - eModifierType_Skin = 42, - eModifierType_LaplacianSmooth = 43, - eModifierType_Triangulate = 44, - eModifierType_UVWarp = 45, - eModifierType_MeshCache = 46, - eModifierType_LaplacianDeform = 47, - eModifierType_Wireframe = 48, - eModifierType_DataTransfer = 49, - eModifierType_NormalEdit = 50, - eModifierType_CorrectiveSmooth = 51, - eModifierType_MeshSequenceCache = 52, - eModifierType_SurfaceDeform = 53, - eModifierType_WeightedNormal = 54, - NUM_MODIFIER_TYPES, + eModifierType_None = 0, + eModifierType_Subsurf = 1, + eModifierType_Lattice = 2, + eModifierType_Curve = 3, + eModifierType_Build = 4, + eModifierType_Mirror = 5, + eModifierType_Decimate = 6, + eModifierType_Wave = 7, + eModifierType_Armature = 8, + eModifierType_Hook = 9, + eModifierType_Softbody = 10, + eModifierType_Boolean = 11, + eModifierType_Array = 12, + eModifierType_EdgeSplit = 13, + eModifierType_Displace = 14, + eModifierType_UVProject = 15, + eModifierType_Smooth = 16, + eModifierType_Cast = 17, + eModifierType_MeshDeform = 18, + eModifierType_ParticleSystem = 19, + eModifierType_ParticleInstance = 20, + eModifierType_Explode = 21, + eModifierType_Cloth = 22, + eModifierType_Collision = 23, + eModifierType_Bevel = 24, + eModifierType_Shrinkwrap = 25, + eModifierType_Fluidsim = 26, + eModifierType_Mask = 27, + eModifierType_SimpleDeform = 28, + eModifierType_Multires = 29, + eModifierType_Surface = 30, + eModifierType_Smoke = 31, + eModifierType_ShapeKey = 32, + eModifierType_Solidify = 33, + eModifierType_Screw = 34, + eModifierType_Warp = 35, + eModifierType_WeightVGEdit = 36, + eModifierType_WeightVGMix = 37, + eModifierType_WeightVGProximity = 38, + eModifierType_Ocean = 39, + eModifierType_DynamicPaint = 40, + eModifierType_Remesh = 41, + eModifierType_Skin = 42, + eModifierType_LaplacianSmooth = 43, + eModifierType_Triangulate = 44, + eModifierType_UVWarp = 45, + eModifierType_MeshCache = 46, + eModifierType_LaplacianDeform = 47, + eModifierType_Wireframe = 48, + eModifierType_DataTransfer = 49, + eModifierType_NormalEdit = 50, + eModifierType_CorrectiveSmooth = 51, + eModifierType_MeshSequenceCache = 52, + eModifierType_SurfaceDeform = 53, + eModifierType_WeightedNormal = 54, + NUM_MODIFIER_TYPES, } ModifierType; typedef enum ModifierMode { - eModifierMode_Realtime = (1 << 0), - eModifierMode_Render = (1 << 1), - eModifierMode_Editmode = (1 << 2), - eModifierMode_OnCage = (1 << 3), - eModifierMode_Expanded = (1 << 4), - eModifierMode_Virtual = (1 << 5), - eModifierMode_ApplyOnSpline = (1 << 6), - eModifierMode_DisableTemporary = (1u << 31), + eModifierMode_Realtime = (1 << 0), + eModifierMode_Render = (1 << 1), + eModifierMode_Editmode = (1 << 2), + eModifierMode_OnCage = (1 << 3), + eModifierMode_Expanded = (1 << 4), + eModifierMode_Virtual = (1 << 5), + eModifierMode_ApplyOnSpline = (1 << 6), + eModifierMode_DisableTemporary = (1u << 31), } ModifierMode; typedef struct ModifierData { - struct ModifierData *next, *prev; + struct ModifierData *next, *prev; - int type, mode; - int stackindex; - short flag; - char _pad[2]; - /** MAX_NAME. */ - char name[64]; + int type, mode; + int stackindex; + short flag; + char _pad[2]; + /** MAX_NAME. */ + char name[64]; - char *error; + char *error; - /* Pointer to a ModifierData in the original domain. */ - struct ModifierData *orig_modifier_data; - void *runtime; + /* Pointer to a ModifierData in the original domain. */ + struct ModifierData *orig_modifier_data; + void *runtime; } ModifierData; typedef enum { - /* This modifier has been inserted in local override, and hence can be fully edited. */ - eModifierFlag_StaticOverride_Local = (1 << 0), - /* This modifier does not own its caches, but instead shares them with another modifier. */ - eModifierFlag_SharedCaches = (1 << 1), + /* This modifier has been inserted in local override, and hence can be fully edited. */ + eModifierFlag_StaticOverride_Local = (1 << 0), + /* This modifier does not own its caches, but instead shares them with another modifier. */ + eModifierFlag_SharedCaches = (1 << 1), } ModifierFlag; /* not a real modifier */ typedef struct MappingInfoModifierData { - ModifierData modifier; - - struct Tex *texture; - struct Object *map_object; - /** MAX_CUSTOMDATA_LAYER_NAME. */ - char uvlayer_name[64]; - int uvlayer_tmp; - int texmapping; + ModifierData modifier; + + struct Tex *texture; + struct Object *map_object; + /** MAX_CUSTOMDATA_LAYER_NAME. */ + char uvlayer_name[64]; + int uvlayer_tmp; + int texmapping; } MappingInfoModifierData; typedef enum { - eSubsurfModifierFlag_Incremental = (1 << 0), - eSubsurfModifierFlag_DebugIncr = (1 << 1), - eSubsurfModifierFlag_ControlEdges = (1 << 2), - /* DEPRECATED, ONLY USED FOR DO-VERSIONS */ - eSubsurfModifierFlag_SubsurfUv_DEPRECATED = (1 << 3), - eSubsurfModifierFlag_UseCrease = (1 << 4), + eSubsurfModifierFlag_Incremental = (1 << 0), + eSubsurfModifierFlag_DebugIncr = (1 << 1), + eSubsurfModifierFlag_ControlEdges = (1 << 2), + /* DEPRECATED, ONLY USED FOR DO-VERSIONS */ + eSubsurfModifierFlag_SubsurfUv_DEPRECATED = (1 << 3), + eSubsurfModifierFlag_UseCrease = (1 << 4), } SubsurfModifierFlag; typedef enum { - SUBSURF_TYPE_CATMULL_CLARK = 0, - SUBSURF_TYPE_SIMPLE = 1, + SUBSURF_TYPE_CATMULL_CLARK = 0, + SUBSURF_TYPE_SIMPLE = 1, } eSubsurfModifierType; typedef enum { - SUBSURF_UV_SMOOTH_NONE = 0, - SUBSURF_UV_SMOOTH_PRESERVE_CORNERS = 1, - SUBSURF_UV_SMOOTH_PRESERVE_CORNERS_AND_JUNCTIONS = 2, - SUBSURF_UV_SMOOTH_PRESERVE_CORNERS_JUNCTIONS_AND_CONCAVE = 3, - SUBSURF_UV_SMOOTH_PRESERVE_BOUNDARIES = 4, - SUBSURF_UV_SMOOTH_ALL = 5, + SUBSURF_UV_SMOOTH_NONE = 0, + SUBSURF_UV_SMOOTH_PRESERVE_CORNERS = 1, + SUBSURF_UV_SMOOTH_PRESERVE_CORNERS_AND_JUNCTIONS = 2, + SUBSURF_UV_SMOOTH_PRESERVE_CORNERS_JUNCTIONS_AND_CONCAVE = 3, + SUBSURF_UV_SMOOTH_PRESERVE_BOUNDARIES = 4, + SUBSURF_UV_SMOOTH_ALL = 5, } eSubsurfUVSmooth; typedef struct SubsurfModifierData { - ModifierData modifier; + ModifierData modifier; - short subdivType, levels, renderLevels, flags; - short uv_smooth; - short quality; - char _pad[4]; + short subdivType, levels, renderLevels, flags; + short uv_smooth; + short quality; + char _pad[4]; - /* TODO(sergey): Get rid of those with the old CCG subdivision code. */ - void *emCache, *mCache; + /* TODO(sergey): Get rid of those with the old CCG subdivision code. */ + void *emCache, *mCache; } SubsurfModifierData; typedef struct LatticeModifierData { - ModifierData modifier; + ModifierData modifier; - struct Object *object; - /** Optional vertexgroup name, MAX_VGROUP_NAME. */ - char name[64]; - float strength; - char _pad[4]; + struct Object *object; + /** Optional vertexgroup name, MAX_VGROUP_NAME. */ + char name[64]; + float strength; + char _pad[4]; } LatticeModifierData; typedef struct CurveModifierData { - ModifierData modifier; - - struct Object *object; - /** Optional vertexgroup name, MAX_VGROUP_NAME. */ - char name[64]; - /** Axis along which curve deforms. */ - short defaxis; - char _pad[6]; + ModifierData modifier; + + struct Object *object; + /** Optional vertexgroup name, MAX_VGROUP_NAME. */ + char name[64]; + /** Axis along which curve deforms. */ + short defaxis; + char _pad[6]; } CurveModifierData; /* CurveModifierData->defaxis */ enum { - MOD_CURVE_POSX = 1, - MOD_CURVE_POSY = 2, - MOD_CURVE_POSZ = 3, - MOD_CURVE_NEGX = 4, - MOD_CURVE_NEGY = 5, - MOD_CURVE_NEGZ = 6, + MOD_CURVE_POSX = 1, + MOD_CURVE_POSY = 2, + MOD_CURVE_POSZ = 3, + MOD_CURVE_NEGX = 4, + MOD_CURVE_NEGY = 5, + MOD_CURVE_NEGZ = 6, }; typedef struct BuildModifierData { - ModifierData modifier; + ModifierData modifier; - float start, length; - short flag; + float start, length; + short flag; - /** (bool) whether order of vertices is randomized - legacy files (for readfile conversion). */ - short randomize; - /** (int) random seed. */ - int seed; + /** (bool) whether order of vertices is randomized - legacy files (for readfile conversion). */ + short randomize; + /** (int) random seed. */ + int seed; } BuildModifierData; /* Build Modifier -> flag */ enum { - /** order of vertices is randomized */ - MOD_BUILD_FLAG_RANDOMIZE = (1 << 0), - /** frame range is reversed, resulting in a deconstruction effect */ - MOD_BUILD_FLAG_REVERSE = (1 << 1), + /** order of vertices is randomized */ + MOD_BUILD_FLAG_RANDOMIZE = (1 << 0), + /** frame range is reversed, resulting in a deconstruction effect */ + MOD_BUILD_FLAG_REVERSE = (1 << 1), }; /* Mask Modifier */ typedef struct MaskModifierData { - ModifierData modifier; - - /** Armature to use to in place of hardcoded vgroup. */ - struct Object *ob_arm; - /** Name of vertex group to use to mask, MAX_VGROUP_NAME. */ - char vgroup[64]; - - /** Using armature or hardcoded vgroup. */ - short mode; - /** Flags for various things. */ - short flag; - float threshold; + ModifierData modifier; + + /** Armature to use to in place of hardcoded vgroup. */ + struct Object *ob_arm; + /** Name of vertex group to use to mask, MAX_VGROUP_NAME. */ + char vgroup[64]; + + /** Using armature or hardcoded vgroup. */ + short mode; + /** Flags for various things. */ + short flag; + float threshold; } MaskModifierData; /* Mask Modifier -> mode */ enum { - MOD_MASK_MODE_VGROUP = 0, - MOD_MASK_MODE_ARM = 1, + MOD_MASK_MODE_VGROUP = 0, + MOD_MASK_MODE_ARM = 1, }; /* Mask Modifier -> flag */ enum { - MOD_MASK_INV = (1 << 0), + MOD_MASK_INV = (1 << 0), }; typedef struct ArrayModifierData { - ModifierData modifier; - - /* the object with which to cap the start of the array */ - struct Object *start_cap; - /* the object with which to cap the end of the array */ - struct Object *end_cap; - /* the curve object to use for MOD_ARR_FITCURVE */ - struct Object *curve_ob; - /* the object to use for object offset */ - struct Object *offset_ob; - /* a constant duplicate offset; - * 1 means the duplicates are 1 unit apart - */ - float offset[3]; - /* a scaled factor for duplicate offsets; - * 1 means the duplicates are 1 object-width apart - */ - float scale[3]; - /* the length over which to distribute the duplicates */ - float length; - /* the limit below which to merge vertices in adjacent duplicates */ - float merge_dist; - /* determines how duplicate count is calculated; one of: - * - MOD_ARR_FIXEDCOUNT -> fixed - * - MOD_ARR_FITLENGTH -> calculated to fit a set length - * - MOD_ARR_FITCURVE -> calculated to fit the length of a Curve object - */ - int fit_type; - /* flags specifying how total offset is calculated; binary OR of: - * - MOD_ARR_OFF_CONST -> total offset += offset - * - MOD_ARR_OFF_RELATIVE -> total offset += relative * object width - * - MOD_ARR_OFF_OBJ -> total offset += offset_ob's matrix - * total offset is the sum of the individual enabled offsets - */ - int offset_type; - /* general flags: - * MOD_ARR_MERGE -> merge vertices in adjacent duplicates - */ - int flags; - /* the number of duplicates to generate for MOD_ARR_FIXEDCOUNT */ - int count; - float uv_offset[2]; + ModifierData modifier; + + /* the object with which to cap the start of the array */ + struct Object *start_cap; + /* the object with which to cap the end of the array */ + struct Object *end_cap; + /* the curve object to use for MOD_ARR_FITCURVE */ + struct Object *curve_ob; + /* the object to use for object offset */ + struct Object *offset_ob; + /* a constant duplicate offset; + * 1 means the duplicates are 1 unit apart + */ + float offset[3]; + /* a scaled factor for duplicate offsets; + * 1 means the duplicates are 1 object-width apart + */ + float scale[3]; + /* the length over which to distribute the duplicates */ + float length; + /* the limit below which to merge vertices in adjacent duplicates */ + float merge_dist; + /* determines how duplicate count is calculated; one of: + * - MOD_ARR_FIXEDCOUNT -> fixed + * - MOD_ARR_FITLENGTH -> calculated to fit a set length + * - MOD_ARR_FITCURVE -> calculated to fit the length of a Curve object + */ + int fit_type; + /* flags specifying how total offset is calculated; binary OR of: + * - MOD_ARR_OFF_CONST -> total offset += offset + * - MOD_ARR_OFF_RELATIVE -> total offset += relative * object width + * - MOD_ARR_OFF_OBJ -> total offset += offset_ob's matrix + * total offset is the sum of the individual enabled offsets + */ + int offset_type; + /* general flags: + * MOD_ARR_MERGE -> merge vertices in adjacent duplicates + */ + int flags; + /* the number of duplicates to generate for MOD_ARR_FIXEDCOUNT */ + int count; + float uv_offset[2]; } ArrayModifierData; /* ArrayModifierData->fit_type */ enum { - MOD_ARR_FIXEDCOUNT = 0, - MOD_ARR_FITLENGTH = 1, - MOD_ARR_FITCURVE = 2, + MOD_ARR_FIXEDCOUNT = 0, + MOD_ARR_FITLENGTH = 1, + MOD_ARR_FITCURVE = 2, }; /* ArrayModifierData->offset_type */ enum { - MOD_ARR_OFF_CONST = (1 << 0), - MOD_ARR_OFF_RELATIVE = (1 << 1), - MOD_ARR_OFF_OBJ = (1 << 2), + MOD_ARR_OFF_CONST = (1 << 0), + MOD_ARR_OFF_RELATIVE = (1 << 1), + MOD_ARR_OFF_OBJ = (1 << 2), }; /* ArrayModifierData->flags */ enum { - MOD_ARR_MERGE = (1 << 0), - MOD_ARR_MERGEFINAL = (1 << 1), + MOD_ARR_MERGE = (1 << 0), + MOD_ARR_MERGEFINAL = (1 << 1), }; typedef struct MirrorModifierData { - ModifierData modifier; - - /** Deprecated, use flag instead. */ - short axis DNA_DEPRECATED; - short flag; - float tolerance; - float uv_offset[2]; - float uv_offset_copy[2]; - struct Object *mirror_ob; + ModifierData modifier; + + /** Deprecated, use flag instead. */ + short axis DNA_DEPRECATED; + short flag; + float tolerance; + float uv_offset[2]; + float uv_offset_copy[2]; + struct Object *mirror_ob; } MirrorModifierData; /* MirrorModifierData->flag */ enum { - MOD_MIR_CLIPPING = (1 << 0), - MOD_MIR_MIRROR_U = (1 << 1), - MOD_MIR_MIRROR_V = (1 << 2), - MOD_MIR_AXIS_X = (1 << 3), - MOD_MIR_AXIS_Y = (1 << 4), - MOD_MIR_AXIS_Z = (1 << 5), - MOD_MIR_VGROUP = (1 << 6), - MOD_MIR_NO_MERGE = (1 << 7), - MOD_MIR_BISECT_AXIS_X = (1 << 8), - MOD_MIR_BISECT_AXIS_Y = (1 << 9), - MOD_MIR_BISECT_AXIS_Z = (1 << 10), - MOD_MIR_BISECT_FLIP_AXIS_X = (1 << 11), - MOD_MIR_BISECT_FLIP_AXIS_Y = (1 << 12), - MOD_MIR_BISECT_FLIP_AXIS_Z = (1 << 13), + MOD_MIR_CLIPPING = (1 << 0), + MOD_MIR_MIRROR_U = (1 << 1), + MOD_MIR_MIRROR_V = (1 << 2), + MOD_MIR_AXIS_X = (1 << 3), + MOD_MIR_AXIS_Y = (1 << 4), + MOD_MIR_AXIS_Z = (1 << 5), + MOD_MIR_VGROUP = (1 << 6), + MOD_MIR_NO_MERGE = (1 << 7), + MOD_MIR_BISECT_AXIS_X = (1 << 8), + MOD_MIR_BISECT_AXIS_Y = (1 << 9), + MOD_MIR_BISECT_AXIS_Z = (1 << 10), + MOD_MIR_BISECT_FLIP_AXIS_X = (1 << 11), + MOD_MIR_BISECT_FLIP_AXIS_Y = (1 << 12), + MOD_MIR_BISECT_FLIP_AXIS_Z = (1 << 13), }; typedef struct EdgeSplitModifierData { - ModifierData modifier; + ModifierData modifier; - /** Angle above which edges should be split. */ - float split_angle; - int flags; + /** Angle above which edges should be split. */ + float split_angle; + int flags; } EdgeSplitModifierData; /* EdgeSplitModifierData->flags */ enum { - MOD_EDGESPLIT_FROMANGLE = (1 << 1), - MOD_EDGESPLIT_FROMFLAG = (1 << 2), + MOD_EDGESPLIT_FROMANGLE = (1 << 1), + MOD_EDGESPLIT_FROMFLAG = (1 << 2), }; typedef struct BevelModifierData { - ModifierData modifier; - - /** The "raw" bevel value (distance/amount to bevel). */ - float value; - /** The resolution (as originally coded, it is the number of recursive bevels). */ - int res; - /** General option flags. */ - short flags; - /** Used to interpret the bevel value. */ - short val_flags; - /** Flags to tell the tool how to limit the bevel. */ - short lim_flags; - /** Flags to direct how edge weights are applied to verts. */ - short e_flags; - /** Material index if >= 0, else material inherited from surrounding faces. */ - short mat; - short edge_flags; - short face_str_mode; - /* patterns to use for mitering non-reflex and reflex miter edges */ - short miter_inner; - short miter_outer; - char _pad0[2]; - /** Controls profile shape (0->1, .5 is round). */ - float profile; - /** if the MOD_BEVEL_ANGLE is set, - * this will be how "sharp" an edge must be before it gets beveled */ - float bevel_angle; - float spread; - /** if the MOD_BEVEL_VWEIGHT option is set, - * this will be the name of the vert group, MAX_VGROUP_NAME */ - char defgrp_name[64]; + ModifierData modifier; + + /** The "raw" bevel value (distance/amount to bevel). */ + float value; + /** The resolution (as originally coded, it is the number of recursive bevels). */ + int res; + /** General option flags. */ + short flags; + /** Used to interpret the bevel value. */ + short val_flags; + /** Flags to tell the tool how to limit the bevel. */ + short lim_flags; + /** Flags to direct how edge weights are applied to verts. */ + short e_flags; + /** Material index if >= 0, else material inherited from surrounding faces. */ + short mat; + short edge_flags; + short face_str_mode; + /* patterns to use for mitering non-reflex and reflex miter edges */ + short miter_inner; + short miter_outer; + char _pad0[2]; + /** Controls profile shape (0->1, .5 is round). */ + float profile; + /** if the MOD_BEVEL_ANGLE is set, + * this will be how "sharp" an edge must be before it gets beveled */ + float bevel_angle; + float spread; + /** if the MOD_BEVEL_VWEIGHT option is set, + * this will be the name of the vert group, MAX_VGROUP_NAME */ + char defgrp_name[64]; } BevelModifierData; /* BevelModifierData->flags and BevelModifierData->lim_flags */ enum { - MOD_BEVEL_VERT = (1 << 1), -/* unused = (1 << 2), */ - MOD_BEVEL_ANGLE = (1 << 3), - MOD_BEVEL_WEIGHT = (1 << 4), - MOD_BEVEL_VGROUP = (1 << 5), -/* unused = (1 << 7), */ -/* unused = (1 << 8), */ -/* unused = (1 << 9), */ -/* unused = (1 << 10), */ -/* unused = (1 << 11), */ -/* unused = (1 << 12), */ - MOD_BEVEL_OVERLAP_OK = (1 << 13), - MOD_BEVEL_EVEN_WIDTHS = (1 << 14), - MOD_BEVEL_HARDEN_NORMALS = (1 << 15), + MOD_BEVEL_VERT = (1 << 1), + /* unused = (1 << 2), */ + MOD_BEVEL_ANGLE = (1 << 3), + MOD_BEVEL_WEIGHT = (1 << 4), + MOD_BEVEL_VGROUP = (1 << 5), + /* unused = (1 << 7), */ + /* unused = (1 << 8), */ + /* unused = (1 << 9), */ + /* unused = (1 << 10), */ + /* unused = (1 << 11), */ + /* unused = (1 << 12), */ + MOD_BEVEL_OVERLAP_OK = (1 << 13), + MOD_BEVEL_EVEN_WIDTHS = (1 << 14), + MOD_BEVEL_HARDEN_NORMALS = (1 << 15), }; /* BevelModifierData->val_flags (not used as flags any more) */ enum { - MOD_BEVEL_AMT_OFFSET = 0, - MOD_BEVEL_AMT_WIDTH = 1, - MOD_BEVEL_AMT_DEPTH = 2, - MOD_BEVEL_AMT_PERCENT = 3, + MOD_BEVEL_AMT_OFFSET = 0, + MOD_BEVEL_AMT_WIDTH = 1, + MOD_BEVEL_AMT_DEPTH = 2, + MOD_BEVEL_AMT_PERCENT = 3, }; /* BevelModifierData->edge_flags */ enum { - MOD_BEVEL_MARK_SEAM = (1 << 0), - MOD_BEVEL_MARK_SHARP = (1 << 1), + MOD_BEVEL_MARK_SEAM = (1 << 0), + MOD_BEVEL_MARK_SHARP = (1 << 1), }; /* BevelModifierData->face_str_mode */ enum { - MOD_BEVEL_FACE_STRENGTH_NONE, - MOD_BEVEL_FACE_STRENGTH_NEW, - MOD_BEVEL_FACE_STRENGTH_AFFECTED, - MOD_BEVEL_FACE_STRENGTH_ALL, + MOD_BEVEL_FACE_STRENGTH_NONE, + MOD_BEVEL_FACE_STRENGTH_NEW, + MOD_BEVEL_FACE_STRENGTH_AFFECTED, + MOD_BEVEL_FACE_STRENGTH_ALL, }; /* BevelModifier->miter_inner and ->miter_outer */ enum { - MOD_BEVEL_MITER_SHARP, - MOD_BEVEL_MITER_PATCH, - MOD_BEVEL_MITER_ARC, + MOD_BEVEL_MITER_SHARP, + MOD_BEVEL_MITER_PATCH, + MOD_BEVEL_MITER_ARC, }; typedef struct SmokeModifierData { - ModifierData modifier; - - struct SmokeDomainSettings *domain; - /** Inflow, outflow, smoke objects. */ - struct SmokeFlowSettings *flow; - /** Collision objects. */ - struct SmokeCollSettings *coll; - float time; - /** Domain, inflow, outflow, .... */ - int type; + ModifierData modifier; + + struct SmokeDomainSettings *domain; + /** Inflow, outflow, smoke objects. */ + struct SmokeFlowSettings *flow; + /** Collision objects. */ + struct SmokeCollSettings *coll; + float time; + /** Domain, inflow, outflow, .... */ + int type; } SmokeModifierData; /* Smoke modifier flags */ enum { - MOD_SMOKE_TYPE_DOMAIN = (1 << 0), - MOD_SMOKE_TYPE_FLOW = (1 << 1), - MOD_SMOKE_TYPE_COLL = (1 << 2), + MOD_SMOKE_TYPE_DOMAIN = (1 << 0), + MOD_SMOKE_TYPE_FLOW = (1 << 1), + MOD_SMOKE_TYPE_COLL = (1 << 2), }; typedef struct DisplaceModifierData { - ModifierData modifier; - - /* keep in sync with MappingInfoModifierData */ - struct Tex *texture; - struct Object *map_object; - /** MAX_CUSTOMDATA_LAYER_NAME. */ - char uvlayer_name[64]; - int uvlayer_tmp; - int texmapping; - /* end MappingInfoModifierData */ - - float strength; - int direction; - /** MAX_VGROUP_NAME. */ - char defgrp_name[64]; - float midlevel; - int space; + ModifierData modifier; + + /* keep in sync with MappingInfoModifierData */ + struct Tex *texture; + struct Object *map_object; + /** MAX_CUSTOMDATA_LAYER_NAME. */ + char uvlayer_name[64]; + int uvlayer_tmp; + int texmapping; + /* end MappingInfoModifierData */ + + float strength; + int direction; + /** MAX_VGROUP_NAME. */ + char defgrp_name[64]; + float midlevel; + int space; } DisplaceModifierData; /* DisplaceModifierData->direction */ enum { - MOD_DISP_DIR_X = 0, - MOD_DISP_DIR_Y = 1, - MOD_DISP_DIR_Z = 2, - MOD_DISP_DIR_NOR = 3, - MOD_DISP_DIR_RGB_XYZ = 4, - MOD_DISP_DIR_CLNOR = 5, + MOD_DISP_DIR_X = 0, + MOD_DISP_DIR_Y = 1, + MOD_DISP_DIR_Z = 2, + MOD_DISP_DIR_NOR = 3, + MOD_DISP_DIR_RGB_XYZ = 4, + MOD_DISP_DIR_CLNOR = 5, }; /* DisplaceModifierData->texmapping */ enum { - MOD_DISP_MAP_LOCAL = 0, - MOD_DISP_MAP_GLOBAL = 1, - MOD_DISP_MAP_OBJECT = 2, - MOD_DISP_MAP_UV = 3, + MOD_DISP_MAP_LOCAL = 0, + MOD_DISP_MAP_GLOBAL = 1, + MOD_DISP_MAP_OBJECT = 2, + MOD_DISP_MAP_UV = 3, }; /* DisplaceModifierData->space */ enum { - MOD_DISP_SPACE_LOCAL = 0, - MOD_DISP_SPACE_GLOBAL = 1, + MOD_DISP_SPACE_LOCAL = 0, + MOD_DISP_SPACE_GLOBAL = 1, }; typedef struct UVProjectModifierData { - ModifierData modifier; - - /* the objects which do the projecting */ - /** MOD_UVPROJECT_MAXPROJECTORS. */ - struct Object *projectors[10]; - char _pad2[4]; - int num_projectors; - float aspectx, aspecty; - float scalex, scaley; - /** MAX_CUSTOMDATA_LAYER_NAME. */ - char uvlayer_name[64]; - int uvlayer_tmp; - char _pad[4]; + ModifierData modifier; + + /* the objects which do the projecting */ + /** MOD_UVPROJECT_MAXPROJECTORS. */ + struct Object *projectors[10]; + char _pad2[4]; + int num_projectors; + float aspectx, aspecty; + float scalex, scaley; + /** MAX_CUSTOMDATA_LAYER_NAME. */ + char uvlayer_name[64]; + int uvlayer_tmp; + char _pad[4]; } UVProjectModifierData; #define MOD_UVPROJECT_MAXPROJECTORS 10 /* UVProjectModifierData->flags */ enum { - MOD_UVPROJECT_OVERRIDEIMAGE = (1 << 0), + MOD_UVPROJECT_OVERRIDEIMAGE = (1 << 0), }; typedef struct DecimateModifierData { - ModifierData modifier; - - /** (mode == MOD_DECIM_MODE_COLLAPSE). */ - float percent; - /** (mode == MOD_DECIM_MODE_UNSUBDIV). */ - short iter; - /** (mode == MOD_DECIM_MODE_DISSOLVE). */ - char delimit; - /** (mode == MOD_DECIM_MODE_COLLAPSE). */ - char symmetry_axis; - /** (mode == MOD_DECIM_MODE_DISSOLVE). */ - float angle; - - /** MAX_VGROUP_NAME. */ - char defgrp_name[64]; - float defgrp_factor; - short flag, mode; - - /* runtime only */ - int face_count; + ModifierData modifier; + + /** (mode == MOD_DECIM_MODE_COLLAPSE). */ + float percent; + /** (mode == MOD_DECIM_MODE_UNSUBDIV). */ + short iter; + /** (mode == MOD_DECIM_MODE_DISSOLVE). */ + char delimit; + /** (mode == MOD_DECIM_MODE_COLLAPSE). */ + char symmetry_axis; + /** (mode == MOD_DECIM_MODE_DISSOLVE). */ + float angle; + + /** MAX_VGROUP_NAME. */ + char defgrp_name[64]; + float defgrp_factor; + short flag, mode; + + /* runtime only */ + int face_count; } DecimateModifierData; enum { - MOD_DECIM_FLAG_INVERT_VGROUP = (1 << 0), - /** for collapse only. dont convert tri pairs back to quads */ - MOD_DECIM_FLAG_TRIANGULATE = (1 << 1), - /** for dissolve only. collapse all verts between 2 faces */ - MOD_DECIM_FLAG_ALL_BOUNDARY_VERTS = (1 << 2), - MOD_DECIM_FLAG_SYMMETRY = (1 << 3), + MOD_DECIM_FLAG_INVERT_VGROUP = (1 << 0), + /** for collapse only. dont convert tri pairs back to quads */ + MOD_DECIM_FLAG_TRIANGULATE = (1 << 1), + /** for dissolve only. collapse all verts between 2 faces */ + MOD_DECIM_FLAG_ALL_BOUNDARY_VERTS = (1 << 2), + MOD_DECIM_FLAG_SYMMETRY = (1 << 3), }; enum { - MOD_DECIM_MODE_COLLAPSE, - MOD_DECIM_MODE_UNSUBDIV, - /** called planar in the UI */ - MOD_DECIM_MODE_DISSOLVE, + MOD_DECIM_MODE_COLLAPSE, + MOD_DECIM_MODE_UNSUBDIV, + /** called planar in the UI */ + MOD_DECIM_MODE_DISSOLVE, }; typedef struct SmoothModifierData { - ModifierData modifier; - float fac; - /** MAX_VGROUP_NAME. */ - char defgrp_name[64]; - short flag, repeat; + ModifierData modifier; + float fac; + /** MAX_VGROUP_NAME. */ + char defgrp_name[64]; + short flag, repeat; } SmoothModifierData; /* Smooth modifier flags */ enum { - MOD_SMOOTH_X = (1 << 1), - MOD_SMOOTH_Y = (1 << 2), - MOD_SMOOTH_Z = (1 << 3), + MOD_SMOOTH_X = (1 << 1), + MOD_SMOOTH_Y = (1 << 2), + MOD_SMOOTH_Z = (1 << 3), }; typedef struct CastModifierData { - ModifierData modifier; - - struct Object *object; - float fac; - float radius; - float size; - /** MAX_VGROUP_NAME. */ - char defgrp_name[64]; - short flag, type; + ModifierData modifier; + + struct Object *object; + float fac; + float radius; + float size; + /** MAX_VGROUP_NAME. */ + char defgrp_name[64]; + short flag, type; } CastModifierData; /* Cast modifier flags */ enum { - /* And what bout (1 << 0) flag? ;) */ - MOD_CAST_X = (1 << 1), - MOD_CAST_Y = (1 << 2), - MOD_CAST_Z = (1 << 3), - MOD_CAST_USE_OB_TRANSFORM = (1 << 4), - MOD_CAST_SIZE_FROM_RADIUS = (1 << 5), + /* And what bout (1 << 0) flag? ;) */ + MOD_CAST_X = (1 << 1), + MOD_CAST_Y = (1 << 2), + MOD_CAST_Z = (1 << 3), + MOD_CAST_USE_OB_TRANSFORM = (1 << 4), + MOD_CAST_SIZE_FROM_RADIUS = (1 << 5), }; /* Cast modifier projection types */ enum { - MOD_CAST_TYPE_SPHERE = 0, - MOD_CAST_TYPE_CYLINDER = 1, - MOD_CAST_TYPE_CUBOID = 2, + MOD_CAST_TYPE_SPHERE = 0, + MOD_CAST_TYPE_CYLINDER = 1, + MOD_CAST_TYPE_CUBOID = 2, }; typedef struct WaveModifierData { - ModifierData modifier; + ModifierData modifier; - /* keep in sync with MappingInfoModifierData */ - struct Tex *texture; - struct Object *map_object; - /** MAX_CUSTOMDATA_LAYER_NAME. */ - char uvlayer_name[64]; - int uvlayer_tmp; - int texmapping; - /* end MappingInfoModifierData */ + /* keep in sync with MappingInfoModifierData */ + struct Tex *texture; + struct Object *map_object; + /** MAX_CUSTOMDATA_LAYER_NAME. */ + char uvlayer_name[64]; + int uvlayer_tmp; + int texmapping; + /* end MappingInfoModifierData */ - struct Object *objectcenter; - /** MAX_VGROUP_NAME. */ - char defgrp_name[64]; + struct Object *objectcenter; + /** MAX_VGROUP_NAME. */ + char defgrp_name[64]; - short flag; - char _pad[2]; + short flag; + char _pad[2]; - float startx, starty, height, width; - float narrow, speed, damp, falloff; + float startx, starty, height, width; + float narrow, speed, damp, falloff; - float timeoffs, lifetime; - char _pad1[4]; + float timeoffs, lifetime; + char _pad1[4]; } WaveModifierData; /* WaveModifierData.flag */ enum { - /* And what bout (1 << 0) flag? ;) */ - MOD_WAVE_X = (1 << 1), - MOD_WAVE_Y = (1 << 2), - MOD_WAVE_CYCL = (1 << 3), - MOD_WAVE_NORM = (1 << 4), - MOD_WAVE_NORM_X = (1 << 5), - MOD_WAVE_NORM_Y = (1 << 6), - MOD_WAVE_NORM_Z = (1 << 7), + /* And what bout (1 << 0) flag? ;) */ + MOD_WAVE_X = (1 << 1), + MOD_WAVE_Y = (1 << 2), + MOD_WAVE_CYCL = (1 << 3), + MOD_WAVE_NORM = (1 << 4), + MOD_WAVE_NORM_X = (1 << 5), + MOD_WAVE_NORM_Y = (1 << 6), + MOD_WAVE_NORM_Z = (1 << 7), }; typedef struct ArmatureModifierData { - ModifierData modifier; - - /** Deformflag replaces armature->deformflag. */ - short deformflag, multi; - char _pad2[4]; - struct Object *object; - /** Stored input of previous modifier, for vertexgroup blending. */ - float *prevCos; - /** MAX_VGROUP_NAME. */ - char defgrp_name[64]; + ModifierData modifier; + + /** Deformflag replaces armature->deformflag. */ + short deformflag, multi; + char _pad2[4]; + struct Object *object; + /** Stored input of previous modifier, for vertexgroup blending. */ + float *prevCos; + /** MAX_VGROUP_NAME. */ + char defgrp_name[64]; } ArmatureModifierData; enum { - MOD_HOOK_UNIFORM_SPACE = (1 << 0), + MOD_HOOK_UNIFORM_SPACE = (1 << 0), }; /* same as WarpModifierFalloff */ typedef enum { - eHook_Falloff_None = 0, - eHook_Falloff_Curve = 1, - eHook_Falloff_Sharp = 2, /* PROP_SHARP */ - eHook_Falloff_Smooth = 3, /* PROP_SMOOTH */ - eHook_Falloff_Root = 4, /* PROP_ROOT */ - eHook_Falloff_Linear = 5, /* PROP_LIN */ - eHook_Falloff_Const = 6, /* PROP_CONST */ - eHook_Falloff_Sphere = 7, /* PROP_SPHERE */ - eHook_Falloff_InvSquare = 8, /* PROP_INVSQUARE */ - /* PROP_RANDOM not used */ + eHook_Falloff_None = 0, + eHook_Falloff_Curve = 1, + eHook_Falloff_Sharp = 2, /* PROP_SHARP */ + eHook_Falloff_Smooth = 3, /* PROP_SMOOTH */ + eHook_Falloff_Root = 4, /* PROP_ROOT */ + eHook_Falloff_Linear = 5, /* PROP_LIN */ + eHook_Falloff_Const = 6, /* PROP_CONST */ + eHook_Falloff_Sphere = 7, /* PROP_SPHERE */ + eHook_Falloff_InvSquare = 8, /* PROP_INVSQUARE */ + /* PROP_RANDOM not used */ } HookModifierFalloff; typedef struct HookModifierData { - ModifierData modifier; - - struct Object *object; - /** Optional name of bone target, MAX_ID_NAME-2. */ - char subtarget[64]; - - char flag; - /** Use enums from WarpModifier (exact same functionality). */ - char falloff_type; - char _pad[6]; - /** Matrix making current transform unmodified. */ - float parentinv[4][4]; - /** Visualization of hook. */ - float cent[3]; - /** If not zero, falloff is distance where influence zero. */ - float falloff; - - struct CurveMapping *curfalloff; - - /** If NULL, it's using vertexgroup. */ - int *indexar; - int totindex; - float force; - /** Optional vertexgroup name, MAX_VGROUP_NAME. */ - char name[64]; + ModifierData modifier; + + struct Object *object; + /** Optional name of bone target, MAX_ID_NAME-2. */ + char subtarget[64]; + + char flag; + /** Use enums from WarpModifier (exact same functionality). */ + char falloff_type; + char _pad[6]; + /** Matrix making current transform unmodified. */ + float parentinv[4][4]; + /** Visualization of hook. */ + float cent[3]; + /** If not zero, falloff is distance where influence zero. */ + float falloff; + + struct CurveMapping *curfalloff; + + /** If NULL, it's using vertexgroup. */ + int *indexar; + int totindex; + float force; + /** Optional vertexgroup name, MAX_VGROUP_NAME. */ + char name[64]; } HookModifierData; typedef struct SoftbodyModifierData { - ModifierData modifier; + ModifierData modifier; } SoftbodyModifierData; typedef struct ClothModifierData { - ModifierData modifier; - - /** The internal data structure for cloth. */ - struct Cloth *clothObject; - /** Definition is in DNA_cloth_types.h. */ - struct ClothSimSettings *sim_parms; - /** Definition is in DNA_cloth_types.h. */ - struct ClothCollSettings *coll_parms; - - /* PointCache can be shared with other instances of ClothModifierData. - * Inspect (modifier.flag & eModifierFlag_SharedCaches) to find out. */ - /** Definition is in DNA_object_force_types.h. */ - struct PointCache *point_cache; - struct ListBase ptcaches; - - /* XXX nasty hack, remove once hair can be separated from cloth modifier data */ - struct ClothHairData *hairdata; - /* grid geometry values of hair continuum */ - float hair_grid_min[3]; - float hair_grid_max[3]; - int hair_grid_res[3]; - float hair_grid_cellsize; - - struct ClothSolverResult *solver_result; + ModifierData modifier; + + /** The internal data structure for cloth. */ + struct Cloth *clothObject; + /** Definition is in DNA_cloth_types.h. */ + struct ClothSimSettings *sim_parms; + /** Definition is in DNA_cloth_types.h. */ + struct ClothCollSettings *coll_parms; + + /* PointCache can be shared with other instances of ClothModifierData. + * Inspect (modifier.flag & eModifierFlag_SharedCaches) to find out. */ + /** Definition is in DNA_object_force_types.h. */ + struct PointCache *point_cache; + struct ListBase ptcaches; + + /* XXX nasty hack, remove once hair can be separated from cloth modifier data */ + struct ClothHairData *hairdata; + /* grid geometry values of hair continuum */ + float hair_grid_min[3]; + float hair_grid_max[3]; + int hair_grid_res[3]; + float hair_grid_cellsize; + + struct ClothSolverResult *solver_result; } ClothModifierData; typedef struct CollisionModifierData { - ModifierData modifier; - - /** Position at the beginning of the frame. */ - struct MVert *x; - /** Position at the end of the frame. */ - struct MVert *xnew; - /** Unused atm, but was discussed during sprint. */ - struct MVert *xold; - /** New position at the actual inter-frame step. */ - struct MVert *current_xnew; - /** Position at the actual inter-frame step. */ - struct MVert *current_x; - /** (xnew - x) at the actual inter-frame step. */ - struct MVert *current_v; - - struct MVertTri *tri; - - unsigned int mvert_num; - unsigned int tri_num; - /** Cfra time of modifier. */ - float time_x, time_xnew; - /** Collider doesn't move this frame, i.e. x[].co==xnew[].co. */ - char is_static; - char _pad[7]; - - /** Bounding volume hierarchy for this cloth object. */ - struct BVHTree *bvhtree; + ModifierData modifier; + + /** Position at the beginning of the frame. */ + struct MVert *x; + /** Position at the end of the frame. */ + struct MVert *xnew; + /** Unused atm, but was discussed during sprint. */ + struct MVert *xold; + /** New position at the actual inter-frame step. */ + struct MVert *current_xnew; + /** Position at the actual inter-frame step. */ + struct MVert *current_x; + /** (xnew - x) at the actual inter-frame step. */ + struct MVert *current_v; + + struct MVertTri *tri; + + unsigned int mvert_num; + unsigned int tri_num; + /** Cfra time of modifier. */ + float time_x, time_xnew; + /** Collider doesn't move this frame, i.e. x[].co==xnew[].co. */ + char is_static; + char _pad[7]; + + /** Bounding volume hierarchy for this cloth object. */ + struct BVHTree *bvhtree; } CollisionModifierData; typedef struct SurfaceModifierData { - ModifierData modifier; + ModifierData modifier; - /** Old position. */ - struct MVert *x; - /** Velocity. */ - struct MVert *v; + /** Old position. */ + struct MVert *x; + /** Velocity. */ + struct MVert *v; - struct Mesh *mesh; + struct Mesh *mesh; - /** Bounding volume hierarchy of the mesh faces. */ - struct BVHTreeFromMesh *bvhtree; + /** Bounding volume hierarchy of the mesh faces. */ + struct BVHTreeFromMesh *bvhtree; - int cfra, numverts; + int cfra, numverts; } SurfaceModifierData; typedef struct BooleanModifierData { - ModifierData modifier; + ModifierData modifier; - struct Object *object; - char operation; - char _pad[2]; - char bm_flag; - float double_threshold; + struct Object *object; + char operation; + char _pad[2]; + char bm_flag; + float double_threshold; } BooleanModifierData; typedef enum { - eBooleanModifierOp_Intersect = 0, - eBooleanModifierOp_Union = 1, - eBooleanModifierOp_Difference = 2, + eBooleanModifierOp_Intersect = 0, + eBooleanModifierOp_Union = 1, + eBooleanModifierOp_Difference = 2, } BooleanModifierOp; /* bm_flag (only used when G_DEBUG) */ enum { - eBooleanModifierBMeshFlag_BMesh_Separate = (1 << 0), - eBooleanModifierBMeshFlag_BMesh_NoDissolve = (1 << 1), - eBooleanModifierBMeshFlag_BMesh_NoConnectRegions = (1 << 2), + eBooleanModifierBMeshFlag_BMesh_Separate = (1 << 0), + eBooleanModifierBMeshFlag_BMesh_NoDissolve = (1 << 1), + eBooleanModifierBMeshFlag_BMesh_NoConnectRegions = (1 << 2), }; typedef struct MDefInfluence { - int vertex; - float weight; + int vertex; + float weight; } MDefInfluence; typedef struct MDefCell { - int offset; - int totinfluence; + int offset; + int totinfluence; } MDefCell; typedef struct MeshDeformModifierData { - ModifierData modifier; - - /** Mesh object. */ - struct Object *object; - /** Optional vertexgroup name, MAX_VGROUP_NAME. */ - char defgrp_name[64]; - - short gridsize, flag; - char _pad[4]; - - /* result of static binding */ - /** Influences. */ - MDefInfluence *bindinfluences; - /** Offsets into influences array. */ - int *bindoffsets; - /** Coordinates that cage was bound with. */ - float *bindcagecos; - /** Total vertices in mesh and cage. */ - int totvert, totcagevert; - - /* result of dynamic binding */ - /** Grid with dynamic binding cell points. */ - MDefCell *dyngrid; - /** Dynamic binding vertex influences. */ - MDefInfluence *dyninfluences; - /** Is this vertex bound or not?. */ - int *dynverts; - /** Size of the dynamic bind grid. */ - int dyngridsize; - /** Total number of vertex influences. */ - int totinfluence; - /** Offset of the dynamic bind grid. */ - float dyncellmin[3]; - /** Width of dynamic bind cell. */ - float dyncellwidth; - /** Matrix of cage at binding time. */ - float bindmat[4][4]; - - /* deprecated storage */ - /** Deprecated inefficient storage. */ - float *bindweights; - /** Deprecated storage of cage coords. */ - float *bindcos; - - /* runtime */ - void (*bindfunc)(struct MeshDeformModifierData *mmd, struct Mesh *cagemesh, - float *vertexcos, int totvert, float cagemat[4][4]); + ModifierData modifier; + + /** Mesh object. */ + struct Object *object; + /** Optional vertexgroup name, MAX_VGROUP_NAME. */ + char defgrp_name[64]; + + short gridsize, flag; + char _pad[4]; + + /* result of static binding */ + /** Influences. */ + MDefInfluence *bindinfluences; + /** Offsets into influences array. */ + int *bindoffsets; + /** Coordinates that cage was bound with. */ + float *bindcagecos; + /** Total vertices in mesh and cage. */ + int totvert, totcagevert; + + /* result of dynamic binding */ + /** Grid with dynamic binding cell points. */ + MDefCell *dyngrid; + /** Dynamic binding vertex influences. */ + MDefInfluence *dyninfluences; + /** Is this vertex bound or not?. */ + int *dynverts; + /** Size of the dynamic bind grid. */ + int dyngridsize; + /** Total number of vertex influences. */ + int totinfluence; + /** Offset of the dynamic bind grid. */ + float dyncellmin[3]; + /** Width of dynamic bind cell. */ + float dyncellwidth; + /** Matrix of cage at binding time. */ + float bindmat[4][4]; + + /* deprecated storage */ + /** Deprecated inefficient storage. */ + float *bindweights; + /** Deprecated storage of cage coords. */ + float *bindcos; + + /* runtime */ + void (*bindfunc)(struct MeshDeformModifierData *mmd, + struct Mesh *cagemesh, + float *vertexcos, + int totvert, + float cagemat[4][4]); } MeshDeformModifierData; enum { - MOD_MDEF_INVERT_VGROUP = (1 << 0), - MOD_MDEF_DYNAMIC_BIND = (1 << 1), + MOD_MDEF_INVERT_VGROUP = (1 << 0), + MOD_MDEF_DYNAMIC_BIND = (1 << 1), }; enum { - MOD_MDEF_VOLUME = 0, - MOD_MDEF_SURFACE = 1, + MOD_MDEF_VOLUME = 0, + MOD_MDEF_SURFACE = 1, }; typedef struct ParticleSystemModifierData { - ModifierData modifier; - - struct ParticleSystem *psys; - /** Final Mesh - its topology may differ from orig mesh. */ - struct Mesh *mesh_final; - /** Original mesh that particles are attached to. */ - struct Mesh *mesh_original; - int totdmvert, totdmedge, totdmface; - short flag; - char _pad[2]; + ModifierData modifier; + + struct ParticleSystem *psys; + /** Final Mesh - its topology may differ from orig mesh. */ + struct Mesh *mesh_final; + /** Original mesh that particles are attached to. */ + struct Mesh *mesh_original; + int totdmvert, totdmedge, totdmface; + short flag; + char _pad[2]; } ParticleSystemModifierData; typedef enum { - eParticleSystemFlag_Pars = (1 << 0), - eParticleSystemFlag_psys_updated = (1 << 1), - eParticleSystemFlag_file_loaded = (1 << 2), + eParticleSystemFlag_Pars = (1 << 0), + eParticleSystemFlag_psys_updated = (1 << 1), + eParticleSystemFlag_file_loaded = (1 << 2), } ParticleSystemModifierFlag; typedef enum { - eParticleInstanceFlag_Parents = (1 << 0), - eParticleInstanceFlag_Children = (1 << 1), - eParticleInstanceFlag_Path = (1 << 2), - eParticleInstanceFlag_Unborn = (1 << 3), - eParticleInstanceFlag_Alive = (1 << 4), - eParticleInstanceFlag_Dead = (1 << 5), - eParticleInstanceFlag_KeepShape = (1 << 6), - eParticleInstanceFlag_UseSize = (1 << 7), + eParticleInstanceFlag_Parents = (1 << 0), + eParticleInstanceFlag_Children = (1 << 1), + eParticleInstanceFlag_Path = (1 << 2), + eParticleInstanceFlag_Unborn = (1 << 3), + eParticleInstanceFlag_Alive = (1 << 4), + eParticleInstanceFlag_Dead = (1 << 5), + eParticleInstanceFlag_KeepShape = (1 << 6), + eParticleInstanceFlag_UseSize = (1 << 7), } ParticleInstanceModifierFlag; typedef enum { - eParticleInstanceSpace_World = 0, - eParticleInstanceSpace_Local = 1, + eParticleInstanceSpace_World = 0, + eParticleInstanceSpace_Local = 1, } ParticleInstanceModifierSpace; typedef struct ParticleInstanceModifierData { - ModifierData modifier; - - struct Object *ob; - short psys, flag, axis, space; - float position, random_position; - float rotation, random_rotation; - float particle_amount, particle_offset; - /** MAX_CUSTOMDATA_LAYER_NAME. */ - char index_layer_name[64]; - /** MAX_CUSTOMDATA_LAYER_NAME. */ - char value_layer_name[64]; + ModifierData modifier; + + struct Object *ob; + short psys, flag, axis, space; + float position, random_position; + float rotation, random_rotation; + float particle_amount, particle_offset; + /** MAX_CUSTOMDATA_LAYER_NAME. */ + char index_layer_name[64]; + /** MAX_CUSTOMDATA_LAYER_NAME. */ + char value_layer_name[64]; } ParticleInstanceModifierData; typedef enum { - eExplodeFlag_CalcFaces = (1 << 0), - eExplodeFlag_PaSize = (1 << 1), - eExplodeFlag_EdgeCut = (1 << 2), - eExplodeFlag_Unborn = (1 << 3), - eExplodeFlag_Alive = (1 << 4), - eExplodeFlag_Dead = (1 << 5), + eExplodeFlag_CalcFaces = (1 << 0), + eExplodeFlag_PaSize = (1 << 1), + eExplodeFlag_EdgeCut = (1 << 2), + eExplodeFlag_Unborn = (1 << 3), + eExplodeFlag_Alive = (1 << 4), + eExplodeFlag_Dead = (1 << 5), } ExplodeModifierFlag; typedef struct ExplodeModifierData { - ModifierData modifier; + ModifierData modifier; - int *facepa; - short flag, vgroup; - float protect; - /** MAX_CUSTOMDATA_LAYER_NAME. */ - char uvname[64]; + int *facepa; + short flag, vgroup; + float protect; + /** MAX_CUSTOMDATA_LAYER_NAME. */ + char uvname[64]; } ExplodeModifierData; typedef struct MultiresModifierData { - ModifierData modifier; + ModifierData modifier; - char lvl, sculptlvl, renderlvl, totlvl; - char simple, flags, _pad[2]; - short quality; - short uv_smooth; - char _pad2[4]; + char lvl, sculptlvl, renderlvl, totlvl; + char simple, flags, _pad[2]; + short quality; + short uv_smooth; + char _pad2[4]; } MultiresModifierData; typedef enum { - eMultiresModifierFlag_ControlEdges = (1 << 0), - /* DEPRECATED, only used for versioning. */ - eMultiresModifierFlag_PlainUv_DEPRECATED = (1 << 1), - eMultiresModifierFlag_UseCrease = (1 << 2), + eMultiresModifierFlag_ControlEdges = (1 << 0), + /* DEPRECATED, only used for versioning. */ + eMultiresModifierFlag_PlainUv_DEPRECATED = (1 << 1), + eMultiresModifierFlag_UseCrease = (1 << 2), } MultiresModifierFlag; typedef struct FluidsimModifierData { - ModifierData modifier; + ModifierData modifier; - /** Definition is in DNA_object_fluidsim_types.h. */ - struct FluidsimSettings *fss; + /** Definition is in DNA_object_fluidsim_types.h. */ + struct FluidsimSettings *fss; } FluidsimModifierData; typedef struct ShrinkwrapModifierData { - ModifierData modifier; - - /** Shrink target. */ - struct Object *target; - /** Additional shrink target. */ - struct Object *auxTarget; - /** Optional vertexgroup name, MAX_VGROUP_NAME. */ - char vgroup_name[64]; - /** Distance offset to keep from mesh/projection point. */ - float keepDist; - /** Shrink type projection. */ - short shrinkType; - /** Shrink options. */ - char shrinkOpts; - /** Shrink to surface mode. */ - char shrinkMode; - /** Limit the projection ray cast. */ - float projLimit; - /** Axis to project over. */ - char projAxis; - - /** If using projection over vertex normal this controls the level of subsurface that must be - * done before getting the vertex coordinates and normal - */ - char subsurfLevels; - - char _pad[2]; + ModifierData modifier; + + /** Shrink target. */ + struct Object *target; + /** Additional shrink target. */ + struct Object *auxTarget; + /** Optional vertexgroup name, MAX_VGROUP_NAME. */ + char vgroup_name[64]; + /** Distance offset to keep from mesh/projection point. */ + float keepDist; + /** Shrink type projection. */ + short shrinkType; + /** Shrink options. */ + char shrinkOpts; + /** Shrink to surface mode. */ + char shrinkMode; + /** Limit the projection ray cast. */ + float projLimit; + /** Axis to project over. */ + char projAxis; + + /** If using projection over vertex normal this controls the level of subsurface that must be + * done before getting the vertex coordinates and normal + */ + char subsurfLevels; + + char _pad[2]; } ShrinkwrapModifierData; /* Shrinkwrap->shrinkType */ enum { - MOD_SHRINKWRAP_NEAREST_SURFACE = 0, - MOD_SHRINKWRAP_PROJECT = 1, - MOD_SHRINKWRAP_NEAREST_VERTEX = 2, - MOD_SHRINKWRAP_TARGET_PROJECT = 3, + MOD_SHRINKWRAP_NEAREST_SURFACE = 0, + MOD_SHRINKWRAP_PROJECT = 1, + MOD_SHRINKWRAP_NEAREST_VERTEX = 2, + MOD_SHRINKWRAP_TARGET_PROJECT = 3, }; /* Shrinkwrap->shrinkMode */ enum { - /** Move vertex to the surface of the target object (keepDist towards original position) */ - MOD_SHRINKWRAP_ON_SURFACE = 0, - /** Move the vertex inside the target object; don't change if already inside */ - MOD_SHRINKWRAP_INSIDE = 1, - /** Move the vertex outside the target object; don't change if already outside */ - MOD_SHRINKWRAP_OUTSIDE = 2, - /** Move vertex to the surface of the target object, with keepDist towards the outside */ - MOD_SHRINKWRAP_OUTSIDE_SURFACE = 3, - /** Move vertex to the surface of the target object, with keepDist along the normal */ - MOD_SHRINKWRAP_ABOVE_SURFACE = 4, + /** Move vertex to the surface of the target object (keepDist towards original position) */ + MOD_SHRINKWRAP_ON_SURFACE = 0, + /** Move the vertex inside the target object; don't change if already inside */ + MOD_SHRINKWRAP_INSIDE = 1, + /** Move the vertex outside the target object; don't change if already outside */ + MOD_SHRINKWRAP_OUTSIDE = 2, + /** Move vertex to the surface of the target object, with keepDist towards the outside */ + MOD_SHRINKWRAP_OUTSIDE_SURFACE = 3, + /** Move vertex to the surface of the target object, with keepDist along the normal */ + MOD_SHRINKWRAP_ABOVE_SURFACE = 4, }; /* Shrinkwrap->shrinkOpts */ enum { - /** allow shrinkwrap to move the vertex in the positive direction of axis */ - MOD_SHRINKWRAP_PROJECT_ALLOW_POS_DIR = (1 << 0), - /** allow shrinkwrap to move the vertex in the negative direction of axis */ - MOD_SHRINKWRAP_PROJECT_ALLOW_NEG_DIR = (1 << 1), + /** allow shrinkwrap to move the vertex in the positive direction of axis */ + MOD_SHRINKWRAP_PROJECT_ALLOW_POS_DIR = (1 << 0), + /** allow shrinkwrap to move the vertex in the negative direction of axis */ + MOD_SHRINKWRAP_PROJECT_ALLOW_NEG_DIR = (1 << 1), - /** ignore vertex moves if a vertex ends projected on a front face of the target */ - MOD_SHRINKWRAP_CULL_TARGET_FRONTFACE = (1 << 3), - /** ignore vertex moves if a vertex ends projected on a back face of the target */ - MOD_SHRINKWRAP_CULL_TARGET_BACKFACE = (1 << 4), + /** ignore vertex moves if a vertex ends projected on a front face of the target */ + MOD_SHRINKWRAP_CULL_TARGET_FRONTFACE = (1 << 3), + /** ignore vertex moves if a vertex ends projected on a back face of the target */ + MOD_SHRINKWRAP_CULL_TARGET_BACKFACE = (1 << 4), #ifdef DNA_DEPRECATED_ALLOW - /** distance is measure to the front face of the target */ - MOD_SHRINKWRAP_KEEP_ABOVE_SURFACE = (1 << 5), + /** distance is measure to the front face of the target */ + MOD_SHRINKWRAP_KEEP_ABOVE_SURFACE = (1 << 5), #endif - MOD_SHRINKWRAP_INVERT_VGROUP = (1 << 6), - MOD_SHRINKWRAP_INVERT_CULL_TARGET = (1 << 7), + MOD_SHRINKWRAP_INVERT_VGROUP = (1 << 6), + MOD_SHRINKWRAP_INVERT_CULL_TARGET = (1 << 7), }; -#define MOD_SHRINKWRAP_CULL_TARGET_MASK (MOD_SHRINKWRAP_CULL_TARGET_FRONTFACE | MOD_SHRINKWRAP_CULL_TARGET_BACKFACE) +#define MOD_SHRINKWRAP_CULL_TARGET_MASK \ + (MOD_SHRINKWRAP_CULL_TARGET_FRONTFACE | MOD_SHRINKWRAP_CULL_TARGET_BACKFACE) /* Shrinkwrap->projAxis */ enum { - /** projection over normal is used if no axis is selected */ - MOD_SHRINKWRAP_PROJECT_OVER_NORMAL = 0, - MOD_SHRINKWRAP_PROJECT_OVER_X_AXIS = (1 << 0), - MOD_SHRINKWRAP_PROJECT_OVER_Y_AXIS = (1 << 1), - MOD_SHRINKWRAP_PROJECT_OVER_Z_AXIS = (1 << 2), + /** projection over normal is used if no axis is selected */ + MOD_SHRINKWRAP_PROJECT_OVER_NORMAL = 0, + MOD_SHRINKWRAP_PROJECT_OVER_X_AXIS = (1 << 0), + MOD_SHRINKWRAP_PROJECT_OVER_Y_AXIS = (1 << 1), + MOD_SHRINKWRAP_PROJECT_OVER_Z_AXIS = (1 << 2), }; - typedef struct SimpleDeformModifierData { - ModifierData modifier; - - /** Object to control the origin of modifier space coordinates. */ - struct Object *origin; - /** Optional vertexgroup name, MAX_VGROUP_NAME. */ - char vgroup_name[64]; - /** Factors to control simple deforms. */ - float factor; - /** Lower and upper limit. */ - float limit[2]; - - /** Deform function. */ - char mode; - /** Lock axis (for taper and stretch). */ - char axis; - /** Axis to perform the deform on (default is X, but can be overridden by origin. */ - char deform_axis; - char flag; + ModifierData modifier; + + /** Object to control the origin of modifier space coordinates. */ + struct Object *origin; + /** Optional vertexgroup name, MAX_VGROUP_NAME. */ + char vgroup_name[64]; + /** Factors to control simple deforms. */ + float factor; + /** Lower and upper limit. */ + float limit[2]; + + /** Deform function. */ + char mode; + /** Lock axis (for taper and stretch). */ + char axis; + /** Axis to perform the deform on (default is X, but can be overridden by origin. */ + char deform_axis; + char flag; } SimpleDeformModifierData; /* SimpleDeform->flag */ enum { - MOD_SIMPLEDEFORM_FLAG_INVERT_VGROUP = (1 << 0), + MOD_SIMPLEDEFORM_FLAG_INVERT_VGROUP = (1 << 0), }; - enum { - MOD_SIMPLEDEFORM_MODE_TWIST = 1, - MOD_SIMPLEDEFORM_MODE_BEND = 2, - MOD_SIMPLEDEFORM_MODE_TAPER = 3, - MOD_SIMPLEDEFORM_MODE_STRETCH = 4, + MOD_SIMPLEDEFORM_MODE_TWIST = 1, + MOD_SIMPLEDEFORM_MODE_BEND = 2, + MOD_SIMPLEDEFORM_MODE_TAPER = 3, + MOD_SIMPLEDEFORM_MODE_STRETCH = 4, }; enum { - MOD_SIMPLEDEFORM_LOCK_AXIS_X = (1 << 0), - MOD_SIMPLEDEFORM_LOCK_AXIS_Y = (1 << 1), - MOD_SIMPLEDEFORM_LOCK_AXIS_Z = (1 << 2), + MOD_SIMPLEDEFORM_LOCK_AXIS_X = (1 << 0), + MOD_SIMPLEDEFORM_LOCK_AXIS_Y = (1 << 1), + MOD_SIMPLEDEFORM_LOCK_AXIS_Z = (1 << 2), }; typedef struct ShapeKeyModifierData { - ModifierData modifier; + ModifierData modifier; } ShapeKeyModifierData; typedef struct SolidifyModifierData { - ModifierData modifier; - - /** Name of vertex group to use, MAX_VGROUP_NAME. */ - char defgrp_name[64]; - /** New surface offset leve.l*/ - float offset; - /** Midpoint of the offset . */ - float offset_fac; - /** factor for the minimum weight to use when vgroups are used, - * avoids 0.0 weights giving duplicate geometry */ - float offset_fac_vg; - /** Clamp offset based on surrounding geometry. */ - float offset_clamp; - char _pad[4]; - float crease_inner; - float crease_outer; - float crease_rim; - int flag; - short mat_ofs; - short mat_ofs_rim; + ModifierData modifier; + + /** Name of vertex group to use, MAX_VGROUP_NAME. */ + char defgrp_name[64]; + /** New surface offset leve.l*/ + float offset; + /** Midpoint of the offset . */ + float offset_fac; + /** factor for the minimum weight to use when vgroups are used, + * avoids 0.0 weights giving duplicate geometry */ + float offset_fac_vg; + /** Clamp offset based on surrounding geometry. */ + float offset_clamp; + char _pad[4]; + float crease_inner; + float crease_outer; + float crease_rim; + int flag; + short mat_ofs; + short mat_ofs_rim; } SolidifyModifierData; enum { - MOD_SOLIDIFY_RIM = (1 << 0), - MOD_SOLIDIFY_EVEN = (1 << 1), - MOD_SOLIDIFY_NORMAL_CALC = (1 << 2), - MOD_SOLIDIFY_VGROUP_INV = (1 << 3), + MOD_SOLIDIFY_RIM = (1 << 0), + MOD_SOLIDIFY_EVEN = (1 << 1), + MOD_SOLIDIFY_NORMAL_CALC = (1 << 2), + MOD_SOLIDIFY_VGROUP_INV = (1 << 3), #ifdef DNA_DEPRECATED - MOD_SOLIDIFY_RIM_MATERIAL = (1 << 4), /* deprecated, used in do_versions */ + MOD_SOLIDIFY_RIM_MATERIAL = (1 << 4), /* deprecated, used in do_versions */ #endif - MOD_SOLIDIFY_FLIP = (1 << 5), - MOD_SOLIDIFY_NOSHELL = (1 << 6), + MOD_SOLIDIFY_FLIP = (1 << 5), + MOD_SOLIDIFY_NOSHELL = (1 << 6), }; typedef struct ScrewModifierData { - ModifierData modifier; - - struct Object *ob_axis; - unsigned int steps; - unsigned int render_steps; - unsigned int iter; - float screw_ofs; - float angle; - float merge_dist; - short flag; - char axis; - char _pad[5]; + ModifierData modifier; + + struct Object *ob_axis; + unsigned int steps; + unsigned int render_steps; + unsigned int iter; + float screw_ofs; + float angle; + float merge_dist; + short flag; + char axis; + char _pad[5]; } ScrewModifierData; enum { - MOD_SCREW_NORMAL_FLIP = (1 << 0), - MOD_SCREW_NORMAL_CALC = (1 << 1), - MOD_SCREW_OBJECT_OFFSET = (1 << 2), -/* MOD_SCREW_OBJECT_ANGLE = (1 << 4), */ - MOD_SCREW_SMOOTH_SHADING = (1 << 5), - MOD_SCREW_UV_STRETCH_U = (1 << 6), - MOD_SCREW_UV_STRETCH_V = (1 << 7), - MOD_SCREW_MERGE = (1 << 8), + MOD_SCREW_NORMAL_FLIP = (1 << 0), + MOD_SCREW_NORMAL_CALC = (1 << 1), + MOD_SCREW_OBJECT_OFFSET = (1 << 2), + /* MOD_SCREW_OBJECT_ANGLE = (1 << 4), */ + MOD_SCREW_SMOOTH_SHADING = (1 << 5), + MOD_SCREW_UV_STRETCH_U = (1 << 6), + MOD_SCREW_UV_STRETCH_V = (1 << 7), + MOD_SCREW_MERGE = (1 << 8), }; typedef struct OceanModifierData { - ModifierData modifier; + ModifierData modifier; - struct Ocean *ocean; - struct OceanCache *oceancache; + struct Ocean *ocean; + struct OceanCache *oceancache; - int resolution; - int spatial_size; + int resolution; + int spatial_size; - float wind_velocity; + float wind_velocity; - float damp; - float smallest_wave; - float depth; + float damp; + float smallest_wave; + float depth; - float wave_alignment; - float wave_direction; - float wave_scale; + float wave_alignment; + float wave_direction; + float wave_scale; - float chop_amount; - float foam_coverage; - float time; + float chop_amount; + float foam_coverage; + float time; - int bakestart; - int bakeend; + int bakestart; + int bakeend; - /** FILE_MAX. */ - char cachepath[1024]; - /** MAX_CUSTOMDATA_LAYER_NAME. */ - char foamlayername[64]; - char cached; - char geometry_mode; + /** FILE_MAX. */ + char cachepath[1024]; + /** MAX_CUSTOMDATA_LAYER_NAME. */ + char foamlayername[64]; + char cached; + char geometry_mode; - char flag; - char _pad2; + char flag; + char _pad2; - short repeat_x; - short repeat_y; + short repeat_x; + short repeat_y; - int seed; + int seed; - float size; + float size; - float foam_fade; + float foam_fade; - char _pad[4]; + char _pad[4]; } OceanModifierData; enum { - MOD_OCEAN_GEOM_GENERATE = 0, - MOD_OCEAN_GEOM_DISPLACE = 1, - MOD_OCEAN_GEOM_SIM_ONLY = 2, + MOD_OCEAN_GEOM_GENERATE = 0, + MOD_OCEAN_GEOM_DISPLACE = 1, + MOD_OCEAN_GEOM_SIM_ONLY = 2, }; - enum { - MOD_OCEAN_GENERATE_FOAM = (1 << 0), - MOD_OCEAN_GENERATE_NORMALS = (1 << 1), + MOD_OCEAN_GENERATE_FOAM = (1 << 0), + MOD_OCEAN_GENERATE_NORMALS = (1 << 1), }; typedef struct WarpModifierData { - ModifierData modifier; - /* keep in sync with MappingInfoModifierData */ - struct Tex *texture; - struct Object *map_object; - /** MAX_CUSTOMDATA_LAYER_NAME. */ - char uvlayer_name[64]; - int uvlayer_tmp; - int texmapping; - /* end MappingInfoModifierData */ - - struct Object *object_from; - struct Object *object_to; - struct CurveMapping *curfalloff; - /** Optional vertexgroup name, MAX_VGROUP_NAME. */ - char defgrp_name[64]; - float strength; - float falloff_radius; - /** Not used yet. */ - char flag; - char falloff_type; - char _pad[6]; + ModifierData modifier; + /* keep in sync with MappingInfoModifierData */ + struct Tex *texture; + struct Object *map_object; + /** MAX_CUSTOMDATA_LAYER_NAME. */ + char uvlayer_name[64]; + int uvlayer_tmp; + int texmapping; + /* end MappingInfoModifierData */ + + struct Object *object_from; + struct Object *object_to; + struct CurveMapping *curfalloff; + /** Optional vertexgroup name, MAX_VGROUP_NAME. */ + char defgrp_name[64]; + float strength; + float falloff_radius; + /** Not used yet. */ + char flag; + char falloff_type; + char _pad[6]; } WarpModifierData; #define MOD_WARP_VOLUME_PRESERVE 1 typedef enum { - eWarp_Falloff_None = 0, - eWarp_Falloff_Curve = 1, - eWarp_Falloff_Sharp = 2, /* PROP_SHARP */ - eWarp_Falloff_Smooth = 3, /* PROP_SMOOTH */ - eWarp_Falloff_Root = 4, /* PROP_ROOT */ - eWarp_Falloff_Linear = 5, /* PROP_LIN */ - eWarp_Falloff_Const = 6, /* PROP_CONST */ - eWarp_Falloff_Sphere = 7, /* PROP_SPHERE */ - eWarp_Falloff_InvSquare = 8, /* PROP_INVSQUARE */ - /* PROP_RANDOM not used */ + eWarp_Falloff_None = 0, + eWarp_Falloff_Curve = 1, + eWarp_Falloff_Sharp = 2, /* PROP_SHARP */ + eWarp_Falloff_Smooth = 3, /* PROP_SMOOTH */ + eWarp_Falloff_Root = 4, /* PROP_ROOT */ + eWarp_Falloff_Linear = 5, /* PROP_LIN */ + eWarp_Falloff_Const = 6, /* PROP_CONST */ + eWarp_Falloff_Sphere = 7, /* PROP_SPHERE */ + eWarp_Falloff_InvSquare = 8, /* PROP_INVSQUARE */ + /* PROP_RANDOM not used */ } WarpModifierFalloff; typedef struct WeightVGEditModifierData { - ModifierData modifier; - - /** Name of vertex group to edit. MAX_VGROUP_NAME. */ - char defgrp_name[64]; - - /** Using MOD_WVG_EDIT_* flags. */ - short edit_flags; - /** Using MOD_WVG_MAPPING_* defines. */ - short falloff_type; - /** Weight for vertices not in vgroup. */ - float default_weight; - - /* Mapping stuff. */ - /** The custom mapping curve!. */ - struct CurveMapping *cmap_curve; - - /* The add/remove vertices weight thresholds. */ - float add_threshold, rem_threshold; - - /* Masking options. */ - /** The global "influence", if no vgroup nor tex is used as mask. */ - float mask_constant; - /** Name of mask vertex group from which to get weight factors. MAX_VGROUP_NAME. */ - char mask_defgrp_name[64]; - - /* Texture masking. */ - /** Which channel to use as weightf. */ - int mask_tex_use_channel; - /** The texture. */ - struct Tex *mask_texture; - /** Name of the map object. */ - struct Object *mask_tex_map_obj; - /** How to map the texture (using MOD_DISP_MAP_* enums). */ - int mask_tex_mapping; - /** Name of the UV map. MAX_CUSTOMDATA_LAYER_NAME. */ - char mask_tex_uvlayer_name[64]; - - /* Padding... */ - char _pad0[4]; + ModifierData modifier; + + /** Name of vertex group to edit. MAX_VGROUP_NAME. */ + char defgrp_name[64]; + + /** Using MOD_WVG_EDIT_* flags. */ + short edit_flags; + /** Using MOD_WVG_MAPPING_* defines. */ + short falloff_type; + /** Weight for vertices not in vgroup. */ + float default_weight; + + /* Mapping stuff. */ + /** The custom mapping curve!. */ + struct CurveMapping *cmap_curve; + + /* The add/remove vertices weight thresholds. */ + float add_threshold, rem_threshold; + + /* Masking options. */ + /** The global "influence", if no vgroup nor tex is used as mask. */ + float mask_constant; + /** Name of mask vertex group from which to get weight factors. MAX_VGROUP_NAME. */ + char mask_defgrp_name[64]; + + /* Texture masking. */ + /** Which channel to use as weightf. */ + int mask_tex_use_channel; + /** The texture. */ + struct Tex *mask_texture; + /** Name of the map object. */ + struct Object *mask_tex_map_obj; + /** How to map the texture (using MOD_DISP_MAP_* enums). */ + int mask_tex_mapping; + /** Name of the UV map. MAX_CUSTOMDATA_LAYER_NAME. */ + char mask_tex_uvlayer_name[64]; + + /* Padding... */ + char _pad0[4]; } WeightVGEditModifierData; /* WeightVGEdit flags. */ enum { - /* (1 << 0), (1 << 1) and (1 << 2) are free for future use! */ - /** Add vertices with higher weight than threshold to vgroup. */ - MOD_WVG_EDIT_ADD2VG = (1 << 3), - /** Remove vertices with lower weight than threshold from vgroup. */ - MOD_WVG_EDIT_REMFVG = (1 << 4), + /* (1 << 0), (1 << 1) and (1 << 2) are free for future use! */ + /** Add vertices with higher weight than threshold to vgroup. */ + MOD_WVG_EDIT_ADD2VG = (1 << 3), + /** Remove vertices with lower weight than threshold from vgroup. */ + MOD_WVG_EDIT_REMFVG = (1 << 4), }; typedef struct WeightVGMixModifierData { - ModifierData modifier; - - /** Name of vertex group to modify/weight. MAX_VGROUP_NAME. */ - char defgrp_name_a[64]; - /** Name of other vertex group to mix in. MAX_VGROUP_NAME. */ - char defgrp_name_b[64]; - /** Default weight value for first vgroup. */ - float default_weight_a; - /** Default weight value to mix in. */ - float default_weight_b; - /** How second vgroups weights affect first ones. */ - char mix_mode; - /** What vertices to affect. */ - char mix_set; - - char _pad0[6]; - - /* Masking options. */ - /** The global "influence", if no vgroup nor tex is used as mask. */ - float mask_constant; - /** Name of mask vertex group from which to get weight factors. MAX_VGROUP_NAME. */ - char mask_defgrp_name[64]; - - /* Texture masking. */ - /** Which channel to use as weightf. */ - int mask_tex_use_channel; - /** The texture. */ - struct Tex *mask_texture; - /** Name of the map object. */ - struct Object *mask_tex_map_obj; - /** How to map the texture!. */ - int mask_tex_mapping; - /** Name of the UV map. MAX_CUSTOMDATA_LAYER_NAME. */ - char mask_tex_uvlayer_name[64]; - - /* Padding... */ - char _pad1[4]; + ModifierData modifier; + + /** Name of vertex group to modify/weight. MAX_VGROUP_NAME. */ + char defgrp_name_a[64]; + /** Name of other vertex group to mix in. MAX_VGROUP_NAME. */ + char defgrp_name_b[64]; + /** Default weight value for first vgroup. */ + float default_weight_a; + /** Default weight value to mix in. */ + float default_weight_b; + /** How second vgroups weights affect first ones. */ + char mix_mode; + /** What vertices to affect. */ + char mix_set; + + char _pad0[6]; + + /* Masking options. */ + /** The global "influence", if no vgroup nor tex is used as mask. */ + float mask_constant; + /** Name of mask vertex group from which to get weight factors. MAX_VGROUP_NAME. */ + char mask_defgrp_name[64]; + + /* Texture masking. */ + /** Which channel to use as weightf. */ + int mask_tex_use_channel; + /** The texture. */ + struct Tex *mask_texture; + /** Name of the map object. */ + struct Object *mask_tex_map_obj; + /** How to map the texture!. */ + int mask_tex_mapping; + /** Name of the UV map. MAX_CUSTOMDATA_LAYER_NAME. */ + char mask_tex_uvlayer_name[64]; + + /* Padding... */ + char _pad1[4]; } WeightVGMixModifierData; /* How second vgroup's weights affect first ones. */ enum { - /** Second weights replace weights. */ - MOD_WVG_MIX_SET = 1, - /** Second weights are added to weights. */ - MOD_WVG_MIX_ADD = 2, - /** Second weights are subtracted from weights. */ - MOD_WVG_MIX_SUB = 3, - /** Second weights are multiplied with weights. */ - MOD_WVG_MIX_MUL = 4, - /** Second weights divide weights. */ - MOD_WVG_MIX_DIV = 5, - /** Difference between second weights and weights. */ - MOD_WVG_MIX_DIF = 6, - /** Average of both weights. */ - MOD_WVG_MIX_AVG = 7, + /** Second weights replace weights. */ + MOD_WVG_MIX_SET = 1, + /** Second weights are added to weights. */ + MOD_WVG_MIX_ADD = 2, + /** Second weights are subtracted from weights. */ + MOD_WVG_MIX_SUB = 3, + /** Second weights are multiplied with weights. */ + MOD_WVG_MIX_MUL = 4, + /** Second weights divide weights. */ + MOD_WVG_MIX_DIV = 5, + /** Difference between second weights and weights. */ + MOD_WVG_MIX_DIF = 6, + /** Average of both weights. */ + MOD_WVG_MIX_AVG = 7, }; /* What vertices to affect. */ enum { - /** Affect all vertices. */ - MOD_WVG_SET_ALL = 1, - /** Affect only vertices in first vgroup. */ - MOD_WVG_SET_A = 2, - /** Affect only vertices in second vgroup. */ - MOD_WVG_SET_B = 3, - /** Affect only vertices in one vgroup or the other. */ - MOD_WVG_SET_OR = 4, - /** Affect only vertices in both vgroups. */ - MOD_WVG_SET_AND = 5, + /** Affect all vertices. */ + MOD_WVG_SET_ALL = 1, + /** Affect only vertices in first vgroup. */ + MOD_WVG_SET_A = 2, + /** Affect only vertices in second vgroup. */ + MOD_WVG_SET_B = 3, + /** Affect only vertices in one vgroup or the other. */ + MOD_WVG_SET_OR = 4, + /** Affect only vertices in both vgroups. */ + MOD_WVG_SET_AND = 5, }; typedef struct WeightVGProximityModifierData { - ModifierData modifier; - - /** Name of vertex group to modify/weight. MAX_VGROUP_NAME. */ - char defgrp_name[64]; - - /* Proximity modes. */ - int proximity_mode; - int proximity_flags; - - /* Target object from which to calculate vertices distances. */ - struct Object *proximity_ob_target; - - /* Masking options. */ - /** The global "influence", if no vgroup nor tex is used as mask. */ - float mask_constant; - /** Name of mask vertex group from which to get weight factors. MAX_VGROUP_NAME. */ - char mask_defgrp_name[64]; - - /* Texture masking. */ - /** Which channel to use as weightf. */ - int mask_tex_use_channel; - /** The texture. */ - struct Tex *mask_texture; - /** Name of the map object. */ - struct Object *mask_tex_map_obj; - /** How to map the texture!. */ - int mask_tex_mapping; - /** Name of the UV Map. MAX_CUSTOMDATA_LAYER_NAME. */ - char mask_tex_uvlayer_name[64]; - - /** Distances mapping to 0.0/1.0 weights. */ - float min_dist, max_dist; - - /* Put here to avoid breaking existing struct... */ - /** Using MOD_WVG_MAPPING_* enums. */ - short falloff_type; - - /* Padding... */ - char _pad0[2]; + ModifierData modifier; + + /** Name of vertex group to modify/weight. MAX_VGROUP_NAME. */ + char defgrp_name[64]; + + /* Proximity modes. */ + int proximity_mode; + int proximity_flags; + + /* Target object from which to calculate vertices distances. */ + struct Object *proximity_ob_target; + + /* Masking options. */ + /** The global "influence", if no vgroup nor tex is used as mask. */ + float mask_constant; + /** Name of mask vertex group from which to get weight factors. MAX_VGROUP_NAME. */ + char mask_defgrp_name[64]; + + /* Texture masking. */ + /** Which channel to use as weightf. */ + int mask_tex_use_channel; + /** The texture. */ + struct Tex *mask_texture; + /** Name of the map object. */ + struct Object *mask_tex_map_obj; + /** How to map the texture!. */ + int mask_tex_mapping; + /** Name of the UV Map. MAX_CUSTOMDATA_LAYER_NAME. */ + char mask_tex_uvlayer_name[64]; + + /** Distances mapping to 0.0/1.0 weights. */ + float min_dist, max_dist; + + /* Put here to avoid breaking existing struct... */ + /** Using MOD_WVG_MAPPING_* enums. */ + short falloff_type; + + /* Padding... */ + char _pad0[2]; } WeightVGProximityModifierData; /* Modes of proximity weighting. */ enum { - MOD_WVG_PROXIMITY_OBJECT = 1, /* source vertex to other location */ - MOD_WVG_PROXIMITY_GEOMETRY = 2, /* source vertex to other geometry */ + MOD_WVG_PROXIMITY_OBJECT = 1, /* source vertex to other location */ + MOD_WVG_PROXIMITY_GEOMETRY = 2, /* source vertex to other geometry */ }; /* Flags options for proximity weighting. */ enum { - /* Use nearest vertices of target obj, in MOD_WVG_PROXIMITY_GEOMETRY mode. */ - MOD_WVG_PROXIMITY_GEOM_VERTS = (1 << 0), - /* Use nearest edges of target obj, in MOD_WVG_PROXIMITY_GEOMETRY mode. */ - MOD_WVG_PROXIMITY_GEOM_EDGES = (1 << 1), - /* Use nearest faces of target obj, in MOD_WVG_PROXIMITY_GEOMETRY mode. */ - MOD_WVG_PROXIMITY_GEOM_FACES = (1 << 2), + /* Use nearest vertices of target obj, in MOD_WVG_PROXIMITY_GEOMETRY mode. */ + MOD_WVG_PROXIMITY_GEOM_VERTS = (1 << 0), + /* Use nearest edges of target obj, in MOD_WVG_PROXIMITY_GEOMETRY mode. */ + MOD_WVG_PROXIMITY_GEOM_EDGES = (1 << 1), + /* Use nearest faces of target obj, in MOD_WVG_PROXIMITY_GEOMETRY mode. */ + MOD_WVG_PROXIMITY_GEOM_FACES = (1 << 2), }; /* Defines common to all WeightVG modifiers. */ /* Mapping modes. */ enum { - MOD_WVG_MAPPING_NONE = 0, - MOD_WVG_MAPPING_CURVE = 1, - MOD_WVG_MAPPING_SHARP = 2, /* PROP_SHARP */ - MOD_WVG_MAPPING_SMOOTH = 3, /* PROP_SMOOTH */ - MOD_WVG_MAPPING_ROOT = 4, /* PROP_ROOT */ - /* PROP_LIN not used (same as NONE, here...). */ - /* PROP_CONST not used. */ - MOD_WVG_MAPPING_SPHERE = 7, /* PROP_SPHERE */ - MOD_WVG_MAPPING_RANDOM = 8, /* PROP_RANDOM */ - MOD_WVG_MAPPING_STEP = 9, /* Median Step. */ + MOD_WVG_MAPPING_NONE = 0, + MOD_WVG_MAPPING_CURVE = 1, + MOD_WVG_MAPPING_SHARP = 2, /* PROP_SHARP */ + MOD_WVG_MAPPING_SMOOTH = 3, /* PROP_SMOOTH */ + MOD_WVG_MAPPING_ROOT = 4, /* PROP_ROOT */ + /* PROP_LIN not used (same as NONE, here...). */ + /* PROP_CONST not used. */ + MOD_WVG_MAPPING_SPHERE = 7, /* PROP_SPHERE */ + MOD_WVG_MAPPING_RANDOM = 8, /* PROP_RANDOM */ + MOD_WVG_MAPPING_STEP = 9, /* Median Step. */ }; /* Tex channel to be used as mask. */ enum { - MOD_WVG_MASK_TEX_USE_INT = 1, - MOD_WVG_MASK_TEX_USE_RED = 2, - MOD_WVG_MASK_TEX_USE_GREEN = 3, - MOD_WVG_MASK_TEX_USE_BLUE = 4, - MOD_WVG_MASK_TEX_USE_HUE = 5, - MOD_WVG_MASK_TEX_USE_SAT = 6, - MOD_WVG_MASK_TEX_USE_VAL = 7, - MOD_WVG_MASK_TEX_USE_ALPHA = 8, + MOD_WVG_MASK_TEX_USE_INT = 1, + MOD_WVG_MASK_TEX_USE_RED = 2, + MOD_WVG_MASK_TEX_USE_GREEN = 3, + MOD_WVG_MASK_TEX_USE_BLUE = 4, + MOD_WVG_MASK_TEX_USE_HUE = 5, + MOD_WVG_MASK_TEX_USE_SAT = 6, + MOD_WVG_MASK_TEX_USE_VAL = 7, + MOD_WVG_MASK_TEX_USE_ALPHA = 8, }; typedef struct DynamicPaintModifierData { - ModifierData modifier; + ModifierData modifier; - struct DynamicPaintCanvasSettings *canvas; - struct DynamicPaintBrushSettings *brush; - /** UI display: canvas / brush. */ - int type; - char _pad[4]; + struct DynamicPaintCanvasSettings *canvas; + struct DynamicPaintBrushSettings *brush; + /** UI display: canvas / brush. */ + int type; + char _pad[4]; } DynamicPaintModifierData; /* Dynamic paint modifier flags */ enum { - MOD_DYNAMICPAINT_TYPE_CANVAS = (1 << 0), - MOD_DYNAMICPAINT_TYPE_BRUSH = (1 << 1), + MOD_DYNAMICPAINT_TYPE_CANVAS = (1 << 0), + MOD_DYNAMICPAINT_TYPE_BRUSH = (1 << 1), }; /* Remesh modifier */ typedef enum eRemeshModifierFlags { - MOD_REMESH_FLOOD_FILL = (1 << 0), - MOD_REMESH_SMOOTH_SHADING = (1 << 1), + MOD_REMESH_FLOOD_FILL = (1 << 0), + MOD_REMESH_SMOOTH_SHADING = (1 << 1), } RemeshModifierFlags; typedef enum eRemeshModifierMode { - /* blocky */ - MOD_REMESH_CENTROID = 0, - /* smooth */ - MOD_REMESH_MASS_POINT = 1, - /* keeps sharp edges */ - MOD_REMESH_SHARP_FEATURES = 2, + /* blocky */ + MOD_REMESH_CENTROID = 0, + /* smooth */ + MOD_REMESH_MASS_POINT = 1, + /* keeps sharp edges */ + MOD_REMESH_SHARP_FEATURES = 2, } eRemeshModifierMode; typedef struct RemeshModifierData { - ModifierData modifier; + ModifierData modifier; - /* floodfill option, controls how small components can be before they are removed */ - float threshold; + /* floodfill option, controls how small components can be before they are removed */ + float threshold; - /* ratio between size of model and grid */ - float scale; + /* ratio between size of model and grid */ + float scale; - float hermite_num; + float hermite_num; - /* octree depth */ - char depth; + /* octree depth */ + char depth; - char flag; - char mode; - char _pad; + char flag; + char mode; + char _pad; } RemeshModifierData; /* Skin modifier */ typedef struct SkinModifierData { - ModifierData modifier; + ModifierData modifier; - float branch_smoothing; + float branch_smoothing; - char flag; + char flag; - char symmetry_axes; + char symmetry_axes; - char _pad[2]; + char _pad[2]; } SkinModifierData; /* SkinModifierData.symmetry_axes */ enum { - MOD_SKIN_SYMM_X = (1 << 0), - MOD_SKIN_SYMM_Y = (1 << 1), - MOD_SKIN_SYMM_Z = (1 << 2), + MOD_SKIN_SYMM_X = (1 << 0), + MOD_SKIN_SYMM_Y = (1 << 1), + MOD_SKIN_SYMM_Z = (1 << 2), }; /* SkinModifierData.flag */ enum { - MOD_SKIN_SMOOTH_SHADING = 1, + MOD_SKIN_SMOOTH_SHADING = 1, }; /* Triangulate modifier */ typedef struct TriangulateModifierData { - ModifierData modifier; + ModifierData modifier; - int flag; - int quad_method; - int ngon_method; - int min_vertices; + int flag; + int quad_method; + int ngon_method; + int min_vertices; } TriangulateModifierData; /* TriangulateModifierData.flag */ enum { #ifdef DNA_DEPRECATED - MOD_TRIANGULATE_BEAUTY = (1 << 0), /* deprecated */ + MOD_TRIANGULATE_BEAUTY = (1 << 0), /* deprecated */ #endif - MOD_TRIANGULATE_KEEP_CUSTOMLOOP_NORMALS = 1 << 1, + MOD_TRIANGULATE_KEEP_CUSTOMLOOP_NORMALS = 1 << 1, }; /* Triangulate methods - NGons */ enum { - MOD_TRIANGULATE_NGON_BEAUTY = 0, - MOD_TRIANGULATE_NGON_EARCLIP, + MOD_TRIANGULATE_NGON_BEAUTY = 0, + MOD_TRIANGULATE_NGON_EARCLIP, }; /* Triangulate methods - Quads */ enum { - MOD_TRIANGULATE_QUAD_BEAUTY = 0, - MOD_TRIANGULATE_QUAD_FIXED, - MOD_TRIANGULATE_QUAD_ALTERNATE, - MOD_TRIANGULATE_QUAD_SHORTEDGE, + MOD_TRIANGULATE_QUAD_BEAUTY = 0, + MOD_TRIANGULATE_QUAD_FIXED, + MOD_TRIANGULATE_QUAD_ALTERNATE, + MOD_TRIANGULATE_QUAD_SHORTEDGE, }; typedef struct LaplacianSmoothModifierData { - ModifierData modifier; + ModifierData modifier; - float lambda, lambda_border; - char _pad1[4]; - /** MAX_VGROUP_NAME. */ - char defgrp_name[64]; - short flag, repeat; + float lambda, lambda_border; + char _pad1[4]; + /** MAX_VGROUP_NAME. */ + char defgrp_name[64]; + short flag, repeat; } LaplacianSmoothModifierData; /* Smooth modifier flags */ enum { - MOD_LAPLACIANSMOOTH_X = (1 << 1), - MOD_LAPLACIANSMOOTH_Y = (1 << 2), - MOD_LAPLACIANSMOOTH_Z = (1 << 3), - MOD_LAPLACIANSMOOTH_PRESERVE_VOLUME = (1 << 4), - MOD_LAPLACIANSMOOTH_NORMALIZED = (1 << 5), + MOD_LAPLACIANSMOOTH_X = (1 << 1), + MOD_LAPLACIANSMOOTH_Y = (1 << 2), + MOD_LAPLACIANSMOOTH_Z = (1 << 3), + MOD_LAPLACIANSMOOTH_PRESERVE_VOLUME = (1 << 4), + MOD_LAPLACIANSMOOTH_NORMALIZED = (1 << 5), }; - typedef struct CorrectiveSmoothModifierData { - ModifierData modifier; + ModifierData modifier; - /* positions set during 'bind' operator - * use for MOD_CORRECTIVESMOOTH_RESTSOURCE_BIND */ - float (*bind_coords)[3]; + /* positions set during 'bind' operator + * use for MOD_CORRECTIVESMOOTH_RESTSOURCE_BIND */ + float (*bind_coords)[3]; - /* note: -1 is used to bind */ - unsigned int bind_coords_num; + /* note: -1 is used to bind */ + unsigned int bind_coords_num; - float lambda; - short repeat, flag; - char smooth_type, rest_source; - char _pad[2]; + float lambda; + short repeat, flag; + char smooth_type, rest_source; + char _pad[2]; - /** MAX_VGROUP_NAME. */ - char defgrp_name[64]; + /** MAX_VGROUP_NAME. */ + char defgrp_name[64]; - /* runtime-only cache (delta's between), - * delta's between the original positions and the smoothed positions */ - float (*delta_cache)[3]; - unsigned int delta_cache_num; - char _pad2[4]; + /* runtime-only cache (delta's between), + * delta's between the original positions and the smoothed positions */ + float (*delta_cache)[3]; + unsigned int delta_cache_num; + char _pad2[4]; } CorrectiveSmoothModifierData; enum { - MOD_CORRECTIVESMOOTH_SMOOTH_SIMPLE = 0, - MOD_CORRECTIVESMOOTH_SMOOTH_LENGTH_WEIGHT = 1, + MOD_CORRECTIVESMOOTH_SMOOTH_SIMPLE = 0, + MOD_CORRECTIVESMOOTH_SMOOTH_LENGTH_WEIGHT = 1, }; enum { - MOD_CORRECTIVESMOOTH_RESTSOURCE_ORCO = 0, - MOD_CORRECTIVESMOOTH_RESTSOURCE_BIND = 1, + MOD_CORRECTIVESMOOTH_RESTSOURCE_ORCO = 0, + MOD_CORRECTIVESMOOTH_RESTSOURCE_BIND = 1, }; /* Corrective Smooth modifier flags */ enum { - MOD_CORRECTIVESMOOTH_INVERT_VGROUP = (1 << 0), - MOD_CORRECTIVESMOOTH_ONLY_SMOOTH = (1 << 1), - MOD_CORRECTIVESMOOTH_PIN_BOUNDARY = (1 << 2), + MOD_CORRECTIVESMOOTH_INVERT_VGROUP = (1 << 0), + MOD_CORRECTIVESMOOTH_ONLY_SMOOTH = (1 << 1), + MOD_CORRECTIVESMOOTH_PIN_BOUNDARY = (1 << 2), }; typedef struct UVWarpModifierData { - ModifierData modifier; - - char axis_u, axis_v; - char _pad[6]; - /** Used for rotate/scale. */ - float center[2]; - - /** Source. */ - struct Object *object_src; - /** Optional name of bone target, MAX_ID_NAME-2. */ - char bone_src[64]; - /** Target. */ - struct Object *object_dst; - /** Optional name of bone target, MAX_ID_NAME-2. */ - char bone_dst[64]; - - /** Optional vertexgroup name, MAX_VGROUP_NAME. */ - char vgroup_name[64]; - /** MAX_CUSTOMDATA_LAYER_NAME. */ - char uvlayer_name[64]; + ModifierData modifier; + + char axis_u, axis_v; + char _pad[6]; + /** Used for rotate/scale. */ + float center[2]; + + /** Source. */ + struct Object *object_src; + /** Optional name of bone target, MAX_ID_NAME-2. */ + char bone_src[64]; + /** Target. */ + struct Object *object_dst; + /** Optional name of bone target, MAX_ID_NAME-2. */ + char bone_dst[64]; + + /** Optional vertexgroup name, MAX_VGROUP_NAME. */ + char vgroup_name[64]; + /** MAX_CUSTOMDATA_LAYER_NAME. */ + char uvlayer_name[64]; } UVWarpModifierData; /* cache modifier */ typedef struct MeshCacheModifierData { - ModifierData modifier; + ModifierData modifier; - char flag; - /** File format. */ - char type; - char time_mode; - char play_mode; + char flag; + /** File format. */ + char type; + char time_mode; + char play_mode; - /* axis conversion */ - char forward_axis; - char up_axis; - char flip_axis; + /* axis conversion */ + char forward_axis; + char up_axis; + char flip_axis; - char interp; + char interp; - float factor; - char deform_mode; - char _pad[7]; + float factor; + char deform_mode; + char _pad[7]; - /* play_mode == MOD_MESHCACHE_PLAY_CFEA */ - float frame_start; - float frame_scale; + /* play_mode == MOD_MESHCACHE_PLAY_CFEA */ + float frame_start; + float frame_scale; - /* play_mode == MOD_MESHCACHE_PLAY_EVAL */ - /* we could use one float for all these but their purpose is very different */ - float eval_frame; - float eval_time; - float eval_factor; + /* play_mode == MOD_MESHCACHE_PLAY_EVAL */ + /* we could use one float for all these but their purpose is very different */ + float eval_frame; + float eval_time; + float eval_factor; - /** FILE_MAX. */ - char filepath[1024]; + /** FILE_MAX. */ + char filepath[1024]; } MeshCacheModifierData; enum { - MOD_MESHCACHE_TYPE_MDD = 1, - MOD_MESHCACHE_TYPE_PC2 = 2, + MOD_MESHCACHE_TYPE_MDD = 1, + MOD_MESHCACHE_TYPE_PC2 = 2, }; enum { - MOD_MESHCACHE_DEFORM_OVERWRITE = 0, - MOD_MESHCACHE_DEFORM_INTEGRATE = 1, + MOD_MESHCACHE_DEFORM_OVERWRITE = 0, + MOD_MESHCACHE_DEFORM_INTEGRATE = 1, }; enum { - MOD_MESHCACHE_INTERP_NONE = 0, - MOD_MESHCACHE_INTERP_LINEAR = 1, -/* MOD_MESHCACHE_INTERP_CARDINAL = 2, */ + MOD_MESHCACHE_INTERP_NONE = 0, + MOD_MESHCACHE_INTERP_LINEAR = 1, + /* MOD_MESHCACHE_INTERP_CARDINAL = 2, */ }; enum { - MOD_MESHCACHE_TIME_FRAME = 0, - MOD_MESHCACHE_TIME_SECONDS = 1, - MOD_MESHCACHE_TIME_FACTOR = 2, + MOD_MESHCACHE_TIME_FRAME = 0, + MOD_MESHCACHE_TIME_SECONDS = 1, + MOD_MESHCACHE_TIME_FACTOR = 2, }; enum { - MOD_MESHCACHE_PLAY_CFEA = 0, - MOD_MESHCACHE_PLAY_EVAL = 1, + MOD_MESHCACHE_PLAY_CFEA = 0, + MOD_MESHCACHE_PLAY_EVAL = 1, }; - typedef struct LaplacianDeformModifierData { - ModifierData modifier; - /** MAX_VGROUP_NAME. */ - char anchor_grp_name[64]; - int total_verts, repeat; - float *vertexco; - /** Runtime only. */ - void *cache_system; - short flag; - char _pad[6]; + ModifierData modifier; + /** MAX_VGROUP_NAME. */ + char anchor_grp_name[64]; + int total_verts, repeat; + float *vertexco; + /** Runtime only. */ + void *cache_system; + short flag; + char _pad[6]; } LaplacianDeformModifierData; /* Laplacian Deform modifier flags */ enum { - MOD_LAPLACIANDEFORM_BIND = 1 << 0, + MOD_LAPLACIANDEFORM_BIND = 1 << 0, }; /* many of these options match 'solidify' */ typedef struct WireframeModifierData { - ModifierData modifier; - /** MAX_VGROUP_NAME. */ - char defgrp_name[64]; - float offset; - float offset_fac; - float offset_fac_vg; - float crease_weight; - short flag, mat_ofs; - char _pad[4]; + ModifierData modifier; + /** MAX_VGROUP_NAME. */ + char defgrp_name[64]; + float offset; + float offset_fac; + float offset_fac_vg; + float crease_weight; + short flag, mat_ofs; + char _pad[4]; } WireframeModifierData; enum { - MOD_WIREFRAME_INVERT_VGROUP = (1 << 0), - MOD_WIREFRAME_REPLACE = (1 << 1), - MOD_WIREFRAME_BOUNDARY = (1 << 2), - MOD_WIREFRAME_OFS_EVEN = (1 << 3), - MOD_WIREFRAME_OFS_RELATIVE = (1 << 4), - MOD_WIREFRAME_CREASE = (1 << 5), + MOD_WIREFRAME_INVERT_VGROUP = (1 << 0), + MOD_WIREFRAME_REPLACE = (1 << 1), + MOD_WIREFRAME_BOUNDARY = (1 << 2), + MOD_WIREFRAME_OFS_EVEN = (1 << 3), + MOD_WIREFRAME_OFS_RELATIVE = (1 << 4), + MOD_WIREFRAME_CREASE = (1 << 5), }; - typedef struct DataTransferModifierData { - ModifierData modifier; + ModifierData modifier; - struct Object *ob_source; + struct Object *ob_source; - /** See DT_TYPE_ enum in ED_object.h. */ - int data_types; + /** See DT_TYPE_ enum in ED_object.h. */ + int data_types; - /* See MREMAP_MODE_ enum in BKE_mesh_mapping.h */ - int vmap_mode; - int emap_mode; - int lmap_mode; - int pmap_mode; + /* See MREMAP_MODE_ enum in BKE_mesh_mapping.h */ + int vmap_mode; + int emap_mode; + int lmap_mode; + int pmap_mode; - float map_max_distance; - float map_ray_radius; - float islands_precision; + float map_max_distance; + float map_ray_radius; + float islands_precision; - char _pad1[4]; + char _pad1[4]; - /** DT_MULTILAYER_INDEX_MAX; See DT_FROMLAYERS_ enum in ED_object.h. */ - int layers_select_src[4]; - /** DT_MULTILAYER_INDEX_MAX; See DT_TOLAYERS_ enum in ED_object.h. */ - int layers_select_dst[4]; + /** DT_MULTILAYER_INDEX_MAX; See DT_FROMLAYERS_ enum in ED_object.h. */ + int layers_select_src[4]; + /** DT_MULTILAYER_INDEX_MAX; See DT_TOLAYERS_ enum in ED_object.h. */ + int layers_select_dst[4]; - /** See CDT_MIX_ enum in BKE_customdata.h. */ - int mix_mode; - float mix_factor; - /** MAX_VGROUP_NAME. */ - char defgrp_name[64]; + /** See CDT_MIX_ enum in BKE_customdata.h. */ + int mix_mode; + float mix_factor; + /** MAX_VGROUP_NAME. */ + char defgrp_name[64]; - int flags; + int flags; } DataTransferModifierData; /* DataTransferModifierData.flags */ enum { - MOD_DATATRANSFER_OBSRC_TRANSFORM = 1 << 0, - MOD_DATATRANSFER_MAP_MAXDIST = 1 << 1, - MOD_DATATRANSFER_INVERT_VGROUP = 1 << 2, + MOD_DATATRANSFER_OBSRC_TRANSFORM = 1 << 0, + MOD_DATATRANSFER_MAP_MAXDIST = 1 << 1, + MOD_DATATRANSFER_INVERT_VGROUP = 1 << 2, - /* Only for UI really. */ - MOD_DATATRANSFER_USE_VERT = 1 << 28, - MOD_DATATRANSFER_USE_EDGE = 1 << 29, - MOD_DATATRANSFER_USE_LOOP = 1 << 30, - MOD_DATATRANSFER_USE_POLY = 1u << 31, + /* Only for UI really. */ + MOD_DATATRANSFER_USE_VERT = 1 << 28, + MOD_DATATRANSFER_USE_EDGE = 1 << 29, + MOD_DATATRANSFER_USE_LOOP = 1 << 30, + MOD_DATATRANSFER_USE_POLY = 1u << 31, }; /* Set Split Normals modifier */ typedef struct NormalEditModifierData { - ModifierData modifier; - /** MAX_VGROUP_NAME. */ - char defgrp_name[64]; - /** Source of normals, or center of ellipsoid. */ - struct Object *target; - short mode; - short flag; - short mix_mode; - char _pad[2]; - float mix_factor; - float mix_limit; - float offset[3]; - char _pad0[4]; + ModifierData modifier; + /** MAX_VGROUP_NAME. */ + char defgrp_name[64]; + /** Source of normals, or center of ellipsoid. */ + struct Object *target; + short mode; + short flag; + short mix_mode; + char _pad[2]; + float mix_factor; + float mix_limit; + float offset[3]; + char _pad0[4]; } NormalEditModifierData; /* NormalEditModifierData.mode */ enum { - MOD_NORMALEDIT_MODE_RADIAL = 0, - MOD_NORMALEDIT_MODE_DIRECTIONAL = 1, + MOD_NORMALEDIT_MODE_RADIAL = 0, + MOD_NORMALEDIT_MODE_DIRECTIONAL = 1, }; /* NormalEditModifierData.flags */ enum { - MOD_NORMALEDIT_INVERT_VGROUP = (1 << 0), - MOD_NORMALEDIT_USE_DIRECTION_PARALLEL = (1 << 1), - MOD_NORMALEDIT_NO_POLYNORS_FIX = (1 << 2), + MOD_NORMALEDIT_INVERT_VGROUP = (1 << 0), + MOD_NORMALEDIT_USE_DIRECTION_PARALLEL = (1 << 1), + MOD_NORMALEDIT_NO_POLYNORS_FIX = (1 << 2), }; /* NormalEditModifierData.mix_mode */ enum { - MOD_NORMALEDIT_MIX_COPY = 0, - MOD_NORMALEDIT_MIX_ADD = 1, - MOD_NORMALEDIT_MIX_SUB = 2, - MOD_NORMALEDIT_MIX_MUL = 3, + MOD_NORMALEDIT_MIX_COPY = 0, + MOD_NORMALEDIT_MIX_ADD = 1, + MOD_NORMALEDIT_MIX_SUB = 2, + MOD_NORMALEDIT_MIX_MUL = 3, }; typedef struct MeshSeqCacheModifierData { - ModifierData modifier; + ModifierData modifier; - struct CacheFile *cache_file; - struct CacheReader *reader; - /** 1024 = FILE_MAX. */ - char object_path[1024]; + struct CacheFile *cache_file; + struct CacheReader *reader; + /** 1024 = FILE_MAX. */ + char object_path[1024]; - char read_flag; - char _pad[7]; + char read_flag; + char _pad[7]; } MeshSeqCacheModifierData; /* MeshSeqCacheModifierData.read_flag */ enum { - MOD_MESHSEQ_READ_VERT = (1 << 0), - MOD_MESHSEQ_READ_POLY = (1 << 1), - MOD_MESHSEQ_READ_UV = (1 << 2), - MOD_MESHSEQ_READ_COLOR = (1 << 3), + MOD_MESHSEQ_READ_VERT = (1 << 0), + MOD_MESHSEQ_READ_POLY = (1 << 1), + MOD_MESHSEQ_READ_UV = (1 << 2), + MOD_MESHSEQ_READ_COLOR = (1 << 3), }; typedef struct SDefBind { - unsigned int *vert_inds; - unsigned int numverts; - int mode; - float *vert_weights; - float normal_dist; - float influence; + unsigned int *vert_inds; + unsigned int numverts; + int mode; + float *vert_weights; + float normal_dist; + float influence; } SDefBind; typedef struct SDefVert { - SDefBind *binds; - unsigned int numbinds; - char _pad[4]; + SDefBind *binds; + unsigned int numbinds; + char _pad[4]; } SDefVert; typedef struct SurfaceDeformModifierData { - ModifierData modifier; - - struct Depsgraph *depsgraph; - /** Bind target object. */ - struct Object *target; - /** Vertex bind data. */ - SDefVert *verts; - float falloff; - unsigned int numverts, numpoly; - int flags; - float mat[4][4]; + ModifierData modifier; + + struct Depsgraph *depsgraph; + /** Bind target object. */ + struct Object *target; + /** Vertex bind data. */ + SDefVert *verts; + float falloff; + unsigned int numverts, numpoly; + int flags; + float mat[4][4]; } SurfaceDeformModifierData; /* Surface Deform modifier flags */ enum { - /* This indicates "do bind on next modifier evaluation" as well as "is bound". */ - MOD_SDEF_BIND = (1 << 0), + /* This indicates "do bind on next modifier evaluation" as well as "is bound". */ + MOD_SDEF_BIND = (1 << 0), - MOD_SDEF_USES_LOOPTRI = (1 << 1), - MOD_SDEF_HAS_CONCAVE = (1 << 2), + MOD_SDEF_USES_LOOPTRI = (1 << 1), + MOD_SDEF_HAS_CONCAVE = (1 << 2), }; /* Surface Deform vertex bind modes */ enum { - MOD_SDEF_MODE_LOOPTRI = 0, - MOD_SDEF_MODE_NGON = 1, - MOD_SDEF_MODE_CENTROID = 2, + MOD_SDEF_MODE_LOOPTRI = 0, + MOD_SDEF_MODE_NGON = 1, + MOD_SDEF_MODE_CENTROID = 2, }; typedef struct WeightedNormalModifierData { - ModifierData modifier; + ModifierData modifier; - /** MAX_VGROUP_NAME. */ - char defgrp_name[64]; - char mode, flag; - short weight; - float thresh; + /** MAX_VGROUP_NAME. */ + char defgrp_name[64]; + char mode, flag; + short weight; + float thresh; } WeightedNormalModifierData; /* Name/id of the generic PROP_INT cdlayer storing face weights. */ @@ -1930,19 +1928,19 @@ typedef struct WeightedNormalModifierData { /* WeightedNormalModifierData.mode */ enum { - MOD_WEIGHTEDNORMAL_MODE_FACE = 0, - MOD_WEIGHTEDNORMAL_MODE_ANGLE = 1, - MOD_WEIGHTEDNORMAL_MODE_FACE_ANGLE = 2, + MOD_WEIGHTEDNORMAL_MODE_FACE = 0, + MOD_WEIGHTEDNORMAL_MODE_ANGLE = 1, + MOD_WEIGHTEDNORMAL_MODE_FACE_ANGLE = 2, }; /* WeightedNormalModifierData.flag */ enum { - MOD_WEIGHTEDNORMAL_KEEP_SHARP = (1 << 0), - MOD_WEIGHTEDNORMAL_INVERT_VGROUP = (1 << 1), - MOD_WEIGHTEDNORMAL_FACE_INFLUENCE = (1 << 2), + MOD_WEIGHTEDNORMAL_KEEP_SHARP = (1 << 0), + MOD_WEIGHTEDNORMAL_INVERT_VGROUP = (1 << 1), + MOD_WEIGHTEDNORMAL_FACE_INFLUENCE = (1 << 2), }; #define MOD_MESHSEQ_READ_ALL \ - (MOD_MESHSEQ_READ_VERT | MOD_MESHSEQ_READ_POLY | MOD_MESHSEQ_READ_UV | MOD_MESHSEQ_READ_COLOR) + (MOD_MESHSEQ_READ_VERT | MOD_MESHSEQ_READ_POLY | MOD_MESHSEQ_READ_UV | MOD_MESHSEQ_READ_COLOR) -#endif /* __DNA_MODIFIER_TYPES_H__ */ +#endif /* __DNA_MODIFIER_TYPES_H__ */ |