Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender-addons.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'add_mesh_extra_objects/add_mesh_rocks/rockgen.py')
-rw-r--r--add_mesh_extra_objects/add_mesh_rocks/rockgen.py39
1 files changed, 29 insertions, 10 deletions
diff --git a/add_mesh_extra_objects/add_mesh_rocks/rockgen.py b/add_mesh_extra_objects/add_mesh_rocks/rockgen.py
index 26f15d97..7279d904 100644
--- a/add_mesh_extra_objects/add_mesh_rocks/rockgen.py
+++ b/add_mesh_extra_objects/add_mesh_rocks/rockgen.py
@@ -174,6 +174,9 @@ def createMeshObject(context, verts, edges, faces, name):
# Update mesh geometry after adding stuff.
mesh.update()
+ if bpy.context.mode == "EDIT_MESH":
+ bpy.ops.object.mode_set(mode='OBJECT')
+
return object_utils.object_data_add(context, mesh, operator=None)
@@ -749,7 +752,7 @@ def generateRocks(context, scaleX, skewX, scaleY, skewY, scaleZ, skewZ,
scale_fac, detail, display_detail, deform, rough,
smooth_fac, smooth_it,
numOfRocks=1, userSeed=1.0,
- scaleDisplace=False, randomSeed=True):
+ scaleDisplace=False, randomSeed=True, use_enter_edit_mode=False):
global LASTROCK
sigmaX = 0
sigmaY = 0
@@ -823,6 +826,8 @@ def generateRocks(context, scaleX, skewX, scaleY, skewY, scaleZ, skewZ,
else:
muZ = scaleZ
+ rocks = []
+
for i in range(numOfRocks):
# todo: enable different random values for each (x,y,z) corrdinate for
# each vertex. This will add additional randomness to the shape of the
@@ -928,13 +933,20 @@ def generateRocks(context, scaleX, skewX, scaleY, skewY, scaleZ, skewZ,
bpy.ops.mesh.normals_make_consistent()
bpy.ops.object.editmode_toggle()
+ if use_enter_edit_mode:
+ for m in rock.modifiers:
+ m.show_in_editmode = True
+ m.show_on_cage = True
+
# Store the last value of i:
shift = i
+ rocks.append(rock)
+
# Add the shift to LASTROCK:
LASTROCK += shift + 1
- return
+ return rocks
# Much of the code below is more-or-less imitation of other addons and as such
@@ -1087,12 +1099,10 @@ class OBJECT_OT_add_mesh_rock(bpy.types.Operator):
box.prop(self, 'user_seed')
box.prop(self, 'preset_values')
- @classmethod
- def poll(cls, context):
- return context.mode == 'OBJECT'
- # return (context.object is not None and context.object.mode == 'OBJECT')
-
def execute(self, context):
+ # turn off 'Enter Edit Mode'
+ use_enter_edit_mode = bpy.context.preferences.edit.use_enter_edit_mode
+ bpy.context.preferences.edit.use_enter_edit_mode = False
# The following "if" block loads preset values:
if self.lastPreset != int(self.preset_values):
@@ -1120,7 +1130,7 @@ class OBJECT_OT_add_mesh_rock(bpy.types.Operator):
# *** Eliminated "deform_Var" and "rough_Var" so the script is not
# as complex to use. May add in again as advanced features. ***
if self.use_generate:
- generateRocks(context,
+ rocks = generateRocks(context,
self.scale_X,
self.skew_X,
self.scale_Y,
@@ -1137,10 +1147,19 @@ class OBJECT_OT_add_mesh_rock(bpy.types.Operator):
self.num_of_rocks,
self.user_seed,
self.use_scale_dis,
- self.use_random_seed)
+ self.use_random_seed,
+ use_enter_edit_mode)
- return {'FINISHED'}
+ for rock in rocks:
+ rock.select_set(True)
+
+ if use_enter_edit_mode:
+ bpy.ops.object.mode_set(mode = 'EDIT')
+ # restore pre operator state
+ bpy.context.preferences.edit.use_enter_edit_mode = use_enter_edit_mode
+
+ return {'FINISHED'}
# Register:
def menu_func_rocks(self, context):