minor cleanup of rna

- use an rna enum-set for proximity vert/edge/face options.
- rename some flags.
- better conform to rna naming conventions.
This commit is contained in:
2011-07-28 01:38:48 +00:00
parent b830c0e394
commit fb99e23205
5 changed files with 73 additions and 74 deletions

View File

@@ -777,8 +777,8 @@ class DATA_PT_modifiers(ModifierButtonsPanel, bpy.types.Panel):
col.label(text="Default Weight:")
col.prop(md, "default_weight", text="")
layout.prop(md, "flag_map")
if md.flag_map:
layout.prop(md, "use_map")
if md.use_map:
split = layout.split()
col = split.column()
col.label("Input:")
@@ -790,27 +790,27 @@ class DATA_PT_modifiers(ModifierButtonsPanel, bpy.types.Panel):
col.prop(md, "map_input_high", text="Max")
col.prop(md, "map_output_high", text="Max")
layout.prop(md, "flag_curve_map")
if md.flag_curve_map:
row = layout.row()
row.template_curve_mapping(md, "cmap_curve")
layout.prop(md, "use_map_curve")
if md.use_map_curve:
col = layout.column()
col.template_curve_mapping(md, "map_curve")
layout.prop(md, "flag_reverse")
layout.prop(md, "use_reverse")
layout.prop(md, "flag_clamp")
if md.flag_clamp:
layout.prop(md, "use_clamp")
if md.use_clamp:
row = layout.row()
row.prop(md, "clamp_min_weight")
row.prop(md, "clamp_max_weight")
row.prop(md, "clamp_weight_min")
row.prop(md, "clamp_weight_max")
row = layout.row()
row.prop(md, "flag_add2vg")
row.prop(md, "flag_remfvg")
row.prop(md, "use_add")
row.prop(md, "use_remove")
row = layout.row()
if md.flag_add2vg:
if md.use_add:
row.prop(md, "add_threshold")
if md.flag_remfvg:
row.prop(md, "rem_threshold")
if md.use_remove:
row.prop(md, "remove_threshold")
# Common mask options…
layout.separator()
@@ -850,15 +850,13 @@ class DATA_PT_modifiers(ModifierButtonsPanel, bpy.types.Panel):
col = split.column()
col.label(text="Target Object:")
col.prop(md, "ob_target", text="")
col.prop(md, "target", text="")
row = layout.row()
row.prop(md, "proximity_mode", expand=True)
if md.proximity_mode == 'OBJ2VERTDIST':
if md.proximity_mode == 'GEOMETRY':
row = layout.row()
row.prop(md, "obj2vert_verts")
row.prop(md, "obj2vert_edges")
row.prop(md, "obj2vert_faces")
row.prop(md, "proximity_geometry", expand=True)
# Common mask options…
layout.separator()

View File

@@ -810,7 +810,7 @@ typedef struct WeightVGEditModifierData {
float add_threshold, rem_threshold;
/* Clamping options. */
float clamp_min_weight, clamp_max_weight;
float clamp_weight_min, clamp_weight_max;
/* Masking options. */
float mask_constant; /* The global “influence”, if no vgroup nor tex is used as mask. */
@@ -846,7 +846,7 @@ typedef struct WeightVGEditModifierData {
typedef struct WeightVGMixModifierData {
ModifierData modifier;
/* XXX Note: I tried to keep everything logically ordered  provided the
/* XXX Note: I tried to keep everything logically ordered provided the
* alignment constraints…
*/
@@ -926,17 +926,17 @@ typedef struct WeightVGProximityModifierData {
/* Modes of proximity weighting. */
/* Dist from target object to affected object. */
#define MOD_WVG_PROXIMITY_OBJ2OBJDIST 1
#define MOD_WVG_PROXIMITY_OBJECT 1 /* source vertex to other location */
/* Dist from target object to vertex. */
#define MOD_WVG_PROXIMITY_OBJ2VERTDIST 2
#define MOD_WVG_PROXIMITY_GEOMETRY 2 /* source vertex to other geometry */
/* Flags options for proximity weighting. */
/* Use nearest vertices of target obj, in OVJ2VERTDIST mode. */
#define MOD_WVG_PROXIMITY_O2VD_VERTS (1 << 0)
/* Use nearest edges of target obj, in OVJ2VERTDIST mode. */
#define MOD_WVG_PROXIMITY_O2VD_EDGES (1 << 1)
/* Use nearest faces of target obj, in OVJ2VERTDIST mode. */
#define MOD_WVG_PROXIMITY_O2VD_FACES (1 << 2)
/* Use nearest vertices of target obj, in MOD_WVG_PROXIMITY_GEOMETRY mode. */
#define MOD_WVG_PROXIMITY_GEOM_VERTS (1 << 0)
/* Use nearest edges of target obj, in MOD_WVG_PROXIMITY_GEOMETRY mode. */
#define MOD_WVG_PROXIMITY_GEOM_EDGES (1 << 1)
/* Use nearest faces of target obj, in MOD_WVG_PROXIMITY_GEOMETRY mode. */
#define MOD_WVG_PROXIMITY_GEOM_FACES (1 << 2)
/* Defines common to all WeightVG modifiers. */
/* Tex channel to be used as mask. */

View File

@@ -2553,34 +2553,34 @@ static void rna_def_modifier_weightvgedit(BlenderRNA *brna)
RNA_def_property_string_funcs(prop, NULL, NULL, "rna_WeightVGModifier_vgroup_set");
RNA_def_property_update(prop, 0, "rna_Modifier_update");
prop= RNA_def_property(srna, "flag_map", PROP_BOOLEAN, PROP_NONE);
prop= RNA_def_property(srna, "use_map", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "edit_flags", MOD_WVG_EDIT_MAP);
RNA_def_property_ui_text(prop, "Map", "Map vertex group weights.");
RNA_def_property_update(prop, 0, "rna_Modifier_update");
prop= RNA_def_property(srna, "flag_curve_map", PROP_BOOLEAN, PROP_NONE);
prop= RNA_def_property(srna, "use_map_curve", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "edit_flags", MOD_WVG_EDIT_CMAP);
RNA_def_property_ui_text(prop, "Curve Map", "Map vertex group weights with a curve.");
RNA_def_property_update(prop, 0, "rna_Modifier_update");
prop= RNA_def_property(srna, "flag_reverse", PROP_BOOLEAN, PROP_NONE);
prop= RNA_def_property(srna, "use_reverse", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "edit_flags", MOD_WVG_EDIT_REVERSE_WEIGHTS);
RNA_def_property_ui_text(prop, "Reverse", "Reverse vertex group weights.");
RNA_def_property_update(prop, 0, "rna_Modifier_update");
prop= RNA_def_property(srna, "flag_add2vg", PROP_BOOLEAN, PROP_NONE);
prop= RNA_def_property(srna, "use_add", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "edit_flags", MOD_WVG_EDIT_ADD2VG);
RNA_def_property_ui_text(prop, "Add to VG", "Add vertices with weight over threshold "
"to vgroup.");
RNA_def_property_update(prop, 0, "rna_Modifier_update");
prop= RNA_def_property(srna, "flag_remfvg", PROP_BOOLEAN, PROP_NONE);
prop= RNA_def_property(srna, "use_remove", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "edit_flags", MOD_WVG_EDIT_REMFVG);
RNA_def_property_ui_text(prop, "Rem from VG", "Remove vertices with weight below threshold "
"from vgroup.");
RNA_def_property_update(prop, 0, "rna_Modifier_update");
prop= RNA_def_property(srna, "flag_clamp", PROP_BOOLEAN, PROP_NONE);
prop= RNA_def_property(srna, "use_clamp", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "edit_flags", MOD_WVG_EDIT_CLAMP);
RNA_def_property_ui_text(prop, "Clamp", "Clamp vertex group weights.");
RNA_def_property_update(prop, 0, "rna_Modifier_update");
@@ -2620,32 +2620,34 @@ static void rna_def_modifier_weightvgedit(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Output High Weight", "High output mapping value.");
RNA_def_property_update(prop, 0, "rna_Modifier_update");
prop= RNA_def_property(srna, "cmap_curve", PROP_POINTER, PROP_NONE);
prop= RNA_def_property(srna, "map_curve", PROP_POINTER, PROP_NONE);
RNA_def_property_pointer_sdna(prop, NULL, "cmap_curve");
RNA_def_property_ui_text(prop, "Mapping Curve", "Custom mapping curve.");
RNA_def_property_update(prop, 0, "rna_Modifier_update");
prop= RNA_def_property(srna, "add_threshold", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "add_threshold");
RNA_def_property_range(prop, -FLT_MAX, FLT_MAX);
RNA_def_property_ui_range(prop, -100000.0, 100000.0, 10, 0);
RNA_def_property_ui_text(prop, "Add Threshold", "Lower bound for a vertexs weight "
"to be added to the vgroup.");
RNA_def_property_update(prop, 0, "rna_Modifier_update");
prop= RNA_def_property(srna, "rem_threshold", PROP_FLOAT, PROP_NONE);
prop= RNA_def_property(srna, "remove_threshold", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "rem_threshold");
RNA_def_property_range(prop, -FLT_MAX, FLT_MAX);
RNA_def_property_ui_range(prop, -100000.0, 100000.0, 10, 0);
RNA_def_property_ui_text(prop, "Rem Threshold", "Upper bound for a vertexs weight "
"to be removed from the vgroup.");
RNA_def_property_update(prop, 0, "rna_Modifier_update");
prop= RNA_def_property(srna, "clamp_min_weight", PROP_FLOAT, PROP_NONE);
prop= RNA_def_property(srna, "clamp_weight_min", PROP_FLOAT, PROP_NONE);
RNA_def_property_range(prop, -FLT_MAX, FLT_MAX);
RNA_def_property_ui_range(prop, -100000.0, 100000.0, 10, 0);
RNA_def_property_ui_text(prop, "Min Weight", "Lowest weight a vertex can get.");
RNA_def_property_update(prop, 0, "rna_Modifier_update");
prop= RNA_def_property(srna, "clamp_max_weight", PROP_FLOAT, PROP_NONE);
prop= RNA_def_property(srna, "clamp_weight_max", PROP_FLOAT, PROP_NONE);
RNA_def_property_range(prop, -FLT_MAX, FLT_MAX);
RNA_def_property_ui_range(prop, -100000.0, 100000.0, 10, 0);
RNA_def_property_ui_text(prop, "Max Weight", "Highest weight a vertex can get.");
@@ -2728,12 +2730,18 @@ static void rna_def_modifier_weightvgmix(BlenderRNA *brna)
static void rna_def_modifier_weightvgproximity(BlenderRNA *brna)
{
static EnumPropertyItem weightvg_proximity_modes_items[] = {
{MOD_WVG_PROXIMITY_OBJ2OBJDIST, "OBJ2OBJDIST", 0, "Object Distance",
{MOD_WVG_PROXIMITY_OBJECT, "OBJECT", 0, "Object Distance",
"Use distance between affected and target objects."},
{MOD_WVG_PROXIMITY_OBJ2VERTDIST, "OBJ2VERTDIST", 0, "Verts Distance",
{MOD_WVG_PROXIMITY_GEOMETRY, "GEOMETRY", 0, "Geometry Distance",
"Use distance between affected objects vertices and target object, or target objects geometry."},
{0, NULL, 0, NULL, NULL}};
static EnumPropertyItem proximity_geometry_items[] = {
{MOD_WVG_PROXIMITY_GEOM_VERTS, "VERTEX", ICON_VERTEXSEL, "Vertex", ""},
{MOD_WVG_PROXIMITY_GEOM_EDGES, "EDGE", ICON_EDGESEL, "Edge", ""},
{MOD_WVG_PROXIMITY_GEOM_FACES, "FACE", ICON_FACESEL, "Face", ""},
{0, NULL, 0, NULL, NULL}};
StructRNA *srna;
PropertyRNA *prop;
@@ -2755,25 +2763,14 @@ static void rna_def_modifier_weightvgproximity(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Proximity Mode", "Which distances to target object to use.");
RNA_def_property_update(prop, 0, "rna_Modifier_update");
prop= RNA_def_property(srna, "obj2vert_verts", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "proximity_flags", MOD_WVG_PROXIMITY_O2VD_VERTS);
RNA_def_property_ui_text(prop, "Verts as Target",
"Use shortest distance to target objects vertices as weight.");
prop= RNA_def_property(srna, "proximity_geometry", PROP_ENUM, PROP_NONE);
RNA_def_property_enum_sdna(prop, NULL, "proximity_flags");
RNA_def_property_enum_items(prop, proximity_geometry_items);
RNA_def_property_flag(prop, PROP_ENUM_FLAG); /* important to run before default set */
RNA_def_property_ui_text(prop, "Proximity Geometry", "Use shortest distance to target objects geometry as weight");
RNA_def_property_update(prop, 0, "rna_Modifier_update");
prop= RNA_def_property(srna, "obj2vert_edges", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "proximity_flags", MOD_WVG_PROXIMITY_O2VD_EDGES);
RNA_def_property_ui_text(prop, "Edges as Target",
"Use shortest distance to target objects edges as weight.");
RNA_def_property_update(prop, 0, "rna_Modifier_update");
prop= RNA_def_property(srna, "obj2vert_faces", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "proximity_flags", MOD_WVG_PROXIMITY_O2VD_FACES);
RNA_def_property_ui_text(prop, "Faces as Target",
"Use shortest distance to target objects faces as weight.");
RNA_def_property_update(prop, 0, "rna_Modifier_update");
prop= RNA_def_property(srna, "ob_target", PROP_POINTER, PROP_NONE);
prop= RNA_def_property(srna, "target", PROP_POINTER, PROP_NONE);
RNA_def_property_pointer_sdna(prop, NULL, "proximity_ob_target");
RNA_def_property_ui_text(prop, "Target Object", "Object to calculate vertices distances from.");
RNA_def_property_flag(prop, PROP_EDITABLE|PROP_ID_SELF_CHECK);

View File

@@ -71,8 +71,8 @@ static void initData(ModifierData *md)
wmd->cmap_curve = curvemapping_add(1, 0.0, 0.0, 1.0, 1.0);
curvemapping_initialize(wmd->cmap_curve);
wmd->clamp_min_weight = 0.0f;
wmd->clamp_max_weight = 1.0f;
wmd->clamp_weight_min = 0.0f;
wmd->clamp_weight_max = 1.0f;
wmd->add_threshold = 0.01f;
wmd->rem_threshold = 0.01f;
@@ -104,8 +104,8 @@ static void copyData(ModifierData *md, ModifierData *target)
twmd->map_new_max = wmd->map_new_max;
twmd->cmap_curve = curvemapping_copy(wmd->cmap_curve);
twmd->clamp_min_weight = wmd->clamp_min_weight;
twmd->clamp_max_weight = wmd->clamp_max_weight;
twmd->clamp_weight_min = wmd->clamp_weight_min;
twmd->clamp_weight_max = wmd->clamp_weight_max;
twmd->add_threshold = wmd->add_threshold;
twmd->rem_threshold = wmd->rem_threshold;
@@ -311,7 +311,7 @@ static DerivedMesh *applyModifier(ModifierData *md, Object *ob, DerivedMesh *der
/* Do clamping. */
if (do_clamp) {
for (i = 0; i < numVerts; i++)
CLAMP(org_w[i], wmd->clamp_min_weight, wmd->clamp_max_weight);
CLAMP(org_w[i], wmd->clamp_weight_min, wmd->clamp_weight_max);
}
/* Update/add/remove from vgroup. */

View File

@@ -207,8 +207,8 @@ static void initData(ModifierData *md)
{
WeightVGProximityModifierData *wmd = (WeightVGProximityModifierData*) md;
wmd->proximity_mode = MOD_WVG_PROXIMITY_OBJ2OBJDIST;
wmd->proximity_flags = MOD_WVG_PROXIMITY_O2VD_VERTS;
wmd->proximity_mode = MOD_WVG_PROXIMITY_OBJECT;
wmd->proximity_flags = MOD_WVG_PROXIMITY_GEOM_VERTS;
wmd->mask_constant = 1.0f;
wmd->mask_tex_use_channel = MOD_WVG_MASK_TEX_USE_INT; /* Use intensity by default. */
@@ -315,7 +315,9 @@ static DerivedMesh *applyModifier(ModifierData *md, Object *ob, DerivedMesh *der
{
WeightVGProximityModifierData *wmd = (WeightVGProximityModifierData*) md;
DerivedMesh *dm = derivedData, *ret = NULL;
#if 0
Mesh *ob_m = NULL;
#endif
MDeformVert *dvert = NULL;
int numVerts;
float (*v_cos)[3] = NULL; /* The vertices coordinates. */
@@ -419,15 +421,15 @@ static DerivedMesh *applyModifier(ModifierData *md, Object *ob, DerivedMesh *der
ret->getVertCo(ret, indices[i], v_cos[i]);
/* Compute wanted distances. */
if (wmd->proximity_mode == MOD_WVG_PROXIMITY_OBJ2OBJDIST) {
if (wmd->proximity_mode == MOD_WVG_PROXIMITY_OBJECT) {
float dist = get_ob2ob_distance(ob, obr);
for(i = 0; i < numIdx; i++)
new_w[i] = dist;
}
else if (wmd->proximity_mode == MOD_WVG_PROXIMITY_OBJ2VERTDIST) {
char use_trgt_verts = (wmd->proximity_flags & MOD_WVG_PROXIMITY_O2VD_VERTS);
char use_trgt_edges = (wmd->proximity_flags & MOD_WVG_PROXIMITY_O2VD_EDGES);
char use_trgt_faces = (wmd->proximity_flags & MOD_WVG_PROXIMITY_O2VD_FACES);
else if (wmd->proximity_mode == MOD_WVG_PROXIMITY_GEOMETRY) {
const short use_trgt_verts = (wmd->proximity_flags & MOD_WVG_PROXIMITY_GEOM_VERTS);
const short use_trgt_edges = (wmd->proximity_flags & MOD_WVG_PROXIMITY_GEOM_EDGES);
const short use_trgt_faces = (wmd->proximity_flags & MOD_WVG_PROXIMITY_GEOM_FACES);
if (use_trgt_verts || use_trgt_edges || use_trgt_faces) {
DerivedMesh *target_dm = obr->derivedFinal;
@@ -460,11 +462,13 @@ static DerivedMesh *applyModifier(ModifierData *md, Object *ob, DerivedMesh *der
}
}
/* Else, fall back to default obj2vert behavior. */
else
else {
get_vert2ob_distance(numIdx, v_cos, new_w, ob, obr);
}
}
else
else {
get_vert2ob_distance(numIdx, v_cos, new_w, ob, obr);
}
}
/* Do masking. */