From 0d4c267a5037f972750198b00c8d0582ae2ea2ed Mon Sep 17 00:00:00 2001 From: Campbell Barton <ideasman42@gmail.com> Date: Mon, 16 Jul 2012 16:54:57 +0000 Subject: [PATCH] sorting recursive children to fracture wasnt working right --- object_fracture_cell/__init__.py | 39 ++++++++++++++------------------ 1 file changed, 17 insertions(+), 22 deletions(-) diff --git a/object_fracture_cell/__init__.py b/object_fracture_cell/__init__.py index 6bd20a8c3..f05e745c4 100644 --- a/object_fracture_cell/__init__.py +++ b/object_fracture_cell/__init__.py @@ -97,29 +97,24 @@ def main_object(scene, obj, level, **kw): objects_recurse_input = [(i, o) for i, o in enumerate(objects)] if recursion_chance != 1.0: - - if 0: + from mathutils import Vector + if recursion_chance_select == 'RANDOM': random.shuffle(objects_recurse_input) - else: - from mathutils import Vector - if recursion_chance_select == 'RANDOM': - pass - elif recursion_chance_select == {'SIZE_MIN', 'SIZE_MAX'}: - objects_recurse_input.sort(key=lambda ob_pair: - (Vector(ob_pair[1].bound_box[0]) - - Vector(ob_pair[1].bound_box[6])).length_squared) - if recursion_chance_select == 'SIZE_MAX': - objects_recurse_input.reverse() - elif recursion_chance_select == {'CURSOR_MIN', 'CURSOR_MAX'}: - print(recursion_chance_select) - c = scene.cursor_location.copy() - objects_recurse_input.sort(key=lambda ob_pair: - (ob_pair[1].matrix_world.translation - c).length_squared) - if recursion_chance_select == 'CURSOR_MAX': - objects_recurse_input.reverse() - - objects_recurse_input[int(recursion_chance * len(objects_recurse_input)):] = [] - objects_recurse_input.sort() + elif recursion_chance_select in {'SIZE_MIN', 'SIZE_MAX'}: + objects_recurse_input.sort(key=lambda ob_pair: + (Vector(ob_pair[1].bound_box[0]) - + Vector(ob_pair[1].bound_box[6])).length_squared) + if recursion_chance_select == 'SIZE_MAX': + objects_recurse_input.reverse() + elif recursion_chance_select in {'CURSOR_MIN', 'CURSOR_MAX'}: + c = scene.cursor_location.copy() + objects_recurse_input.sort(key=lambda ob_pair: + (ob_pair[1].location - c).length_squared) + if recursion_chance_select == 'CURSOR_MAX': + objects_recurse_input.reverse() + + objects_recurse_input[int(recursion_chance * len(objects_recurse_input)):] = [] + objects_recurse_input.sort() # reverse index values so we can remove from original list. objects_recurse_input.reverse() -- GitLab