Index: release/scripts/startup/bl_ui/properties_data_modifier.py =================================================================== --- release/scripts/startup/bl_ui/properties_data_modifier.py (.../https://svn.blender.org/svnroot/bf-blender/trunk/blender) (revision 50974) +++ release/scripts/startup/bl_ui/properties_data_modifier.py (working copy) @@ -155,6 +155,7 @@ col = split.column() col.prop(md, "frame_start") col.prop(md, "frame_duration") + col.prop(md, "reverse") col = split.column() col.prop(md, "use_random_order") @@ -162,6 +163,8 @@ sub.active = md.use_random_order sub.prop(md, "seed") + + def CAST(self, layout, ob, md): split = layout.split(percentage=0.25) Index: source/blender/modifiers/intern/MOD_build.c =================================================================== --- source/blender/modifiers/intern/MOD_build.c (.../https://svn.blender.org/svnroot/bf-blender/trunk/blender) (revision 50974) +++ source/blender/modifiers/intern/MOD_build.c (working copy) @@ -57,6 +57,7 @@ bmd->start = 1.0; bmd->length = 100.0; + bmd->reverse = 1; // lucidlook@gmail.com } static void copyData(ModifierData *md, ModifierData *target) @@ -68,6 +69,7 @@ tbmd->length = bmd->length; tbmd->randomize = bmd->randomize; tbmd->seed = bmd->seed; + tbmd->reverse = bmd->reverse; } static int dependsOnTime(ModifierData *UNUSED(md)) @@ -103,14 +105,25 @@ MEdge *medge_src = dm->getEdgeArray(dm); MVert *mvert_src = dm->getVertArray(dm); + if(bmd->reverse) // lucidlook@gmail.com + { + vertMap = MEM_callocN(sizeof(*vertMap) * numVert_src, "build modifier vertMap"); + for (i = 0; i < numVert_src; i++) vertMap[i] = numVert_src - i; + edgeMap = MEM_callocN(sizeof(*edgeMap) * numEdge_src, "build modifier edgeMap"); + for (i = 0; i < numEdge_src; i++) edgeMap[i] = numEdge_src - i; + faceMap = MEM_callocN(sizeof(*faceMap) * numPoly_src, "build modifier faceMap"); + for (i = 0; i < numPoly_src; i++) faceMap[i] = numPoly_src - i; + } + else + { + vertMap = MEM_callocN(sizeof(*vertMap) * numVert_src, "build modifier vertMap"); + for (i = 0; i < numVert_src; i++) vertMap[i] = i; + edgeMap = MEM_callocN(sizeof(*edgeMap) * numEdge_src, "build modifier edgeMap"); + for (i = 0; i < numEdge_src; i++) edgeMap[i] = i; + faceMap = MEM_callocN(sizeof(*faceMap) * numPoly_src, "build modifier faceMap"); + for (i = 0; i < numPoly_src; i++) faceMap[i] = i; + } - vertMap = MEM_callocN(sizeof(*vertMap) * numVert_src, "build modifier vertMap"); - for (i = 0; i < numVert_src; i++) vertMap[i] = i; - edgeMap = MEM_callocN(sizeof(*edgeMap) * numEdge_src, "build modifier edgeMap"); - for (i = 0; i < numEdge_src; i++) edgeMap[i] = i; - faceMap = MEM_callocN(sizeof(*faceMap) * numPoly_src, "build modifier faceMap"); - for (i = 0; i < numPoly_src; i++) faceMap[i] = i; - frac = (BKE_scene_frame_get(md->scene) - bmd->start) / bmd->length; CLAMP(frac, 0.0f, 1.0f); Index: source/blender/makesdna/DNA_modifier_types.h =================================================================== --- source/blender/makesdna/DNA_modifier_types.h (.../https://svn.blender.org/svnroot/bf-blender/trunk/blender) (revision 50974) +++ source/blender/makesdna/DNA_modifier_types.h (working copy) @@ -161,7 +161,7 @@ ModifierData modifier; float start, length; - int randomize, seed; + int randomize, seed, reverse; // lucidlook@gmail.com } BuildModifierData; /* Mask Modifier */ Index: source/blender/makesrna/intern/rna_modifier.c =================================================================== --- source/blender/makesrna/intern/rna_modifier.c (.../https://svn.blender.org/svnroot/bf-blender/trunk/blender) (revision 50974) +++ source/blender/makesrna/intern/rna_modifier.c (working copy) @@ -1052,6 +1052,12 @@ RNA_def_property_ui_text(prop, "Length", "Total time the build effect requires"); RNA_def_property_update(prop, 0, "rna_Modifier_update"); + // lucidlook@gmail.com + prop = RNA_def_property(srna, "reverse", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_boolean_sdna(prop, NULL, "reverse", 1); + RNA_def_property_ui_text(prop, "Reverse", "Reverse the build sequence"); + RNA_def_property_update(prop, 0, "rna_Modifier_update"); + prop = RNA_def_property(srna, "use_random_order", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "randomize", 1); RNA_def_property_ui_text(prop, "Randomize", "Randomize the faces or edges during build"); @@ -1061,6 +1067,7 @@ RNA_def_property_range(prop, 1, MAXFRAMEF); RNA_def_property_ui_text(prop, "Seed", "Seed for random if used"); RNA_def_property_update(prop, 0, "rna_Modifier_update"); + } static void rna_def_modifier_mirror(BlenderRNA *brna) Index: source/blender/blenloader/intern/readfile.c =================================================================== --- source/blender/blenloader/intern/readfile.c (.../https://svn.blender.org/svnroot/bf-blender/trunk/blender) (revision 50974) +++ source/blender/blenloader/intern/readfile.c (working copy) @@ -4587,6 +4587,7 @@ bmd->start = baf->sfra; bmd->length = baf->len; bmd->randomize = 0; + bmd->reverse = 0; // lucidlook@gmail.com bmd->seed = 1; BLI_addtail(&ob->modifiers, bmd);