From c4c2736d3bd93b5336ad2657c5e1036a13b639bd Mon Sep 17 00:00:00 2001
From: Paul Marshall <portsidepaul@hotmail.com>
Date: Wed, 22 Feb 2012 12:59:30 +0000
Subject: [PATCH] Update that allows for a user to disable generation of
 objects.  This can be useful for better performance will adjusting settings.

Known bug: With the BMaesh update, the rocks are no longer having "smooth" applied.  From what I can tell this might be an API bug with BMesh as my code still appears valid and compliant with the documented Python API.
---
 add_mesh_rocks/add_mesh_rocks.xml |  7 +++
 add_mesh_rocks/factory.xml        |  7 +++
 add_mesh_rocks/rockgen.py         | 72 +++++++++++++++++--------------
 add_mesh_rocks/settings.py        | 14 +++---
 4 files changed, 62 insertions(+), 38 deletions(-)

diff --git a/add_mesh_rocks/add_mesh_rocks.xml b/add_mesh_rocks/add_mesh_rocks.xml
index af5dcacf..116fba71 100644
--- a/add_mesh_rocks/add_mesh_rocks.xml
+++ b/add_mesh_rocks/add_mesh_rocks.xml
@@ -33,6 +33,7 @@
 <!ELEMENT mat_IOR (#PCDATA)>
 <!ELEMENT mat_mossy (#PCDATA)>
 <!ELEMENT random (use_random_seed,user_seed)>
+<!ELEMENT use_generate (#PCDATA)>
 <!ELEMENT use_random_seed (#PCDATA)>
 <!ELEMENT user_seed (#PCDATA)>
 
@@ -94,6 +95,7 @@
 			<mat_mossy>0.0</mat_mossy>
 		</material>
 		<random>
+			<use_generate>True</use_generate>
 			<use_random_seed>True</use_random_seed>
 			<user_seed>1</user_seed>
 		</random>
@@ -153,6 +155,7 @@
 			<mat_mossy>0.0</mat_mossy>
 		</material>
 		<random>
+			<use_generate>True</use_generate>
 			<use_random_seed>True</use_random_seed>
 			<user_seed>1</user_seed>
 		</random>
@@ -212,6 +215,7 @@
 			<mat_mossy>0.0</mat_mossy>
 		</material>
 		<random>
+			<use_generate>True</use_generate>
 			<use_random_seed>True</use_random_seed>
 			<user_seed>1</user_seed>
 		</random>
@@ -271,6 +275,7 @@
 			<mat_mossy>0.0</mat_mossy>
 		</material>
 		<random>
+			<use_generate>True</use_generate>
 			<use_random_seed>True</use_random_seed>
 			<user_seed>1</user_seed>
 		</random>
@@ -330,6 +335,7 @@
 			<mat_mossy>0.0</mat_mossy>
 		</material>
 		<random>
+			<use_generate>True</use_generate>
 			<use_random_seed>True</use_random_seed>
 			<user_seed>1</user_seed>
 		</random>
@@ -389,6 +395,7 @@
 			<mat_mossy>0.0</mat_mossy>
 		</material>
 		<random>
+			<use_generate>True</use_generate>
 			<use_random_seed>True</use_random_seed>
 			<user_seed>1</user_seed>
 		</random>
diff --git a/add_mesh_rocks/factory.xml b/add_mesh_rocks/factory.xml
index af5dcacf..116fba71 100644
--- a/add_mesh_rocks/factory.xml
+++ b/add_mesh_rocks/factory.xml
@@ -33,6 +33,7 @@
 <!ELEMENT mat_IOR (#PCDATA)>
 <!ELEMENT mat_mossy (#PCDATA)>
 <!ELEMENT random (use_random_seed,user_seed)>
+<!ELEMENT use_generate (#PCDATA)>
 <!ELEMENT use_random_seed (#PCDATA)>
 <!ELEMENT user_seed (#PCDATA)>
 
@@ -94,6 +95,7 @@
 			<mat_mossy>0.0</mat_mossy>
 		</material>
 		<random>
+			<use_generate>True</use_generate>
 			<use_random_seed>True</use_random_seed>
 			<user_seed>1</user_seed>
 		</random>
@@ -153,6 +155,7 @@
 			<mat_mossy>0.0</mat_mossy>
 		</material>
 		<random>
+			<use_generate>True</use_generate>
 			<use_random_seed>True</use_random_seed>
 			<user_seed>1</user_seed>
 		</random>
@@ -212,6 +215,7 @@
 			<mat_mossy>0.0</mat_mossy>
 		</material>
 		<random>
+			<use_generate>True</use_generate>
 			<use_random_seed>True</use_random_seed>
 			<user_seed>1</user_seed>
 		</random>
@@ -271,6 +275,7 @@
 			<mat_mossy>0.0</mat_mossy>
 		</material>
 		<random>
+			<use_generate>True</use_generate>
 			<use_random_seed>True</use_random_seed>
 			<user_seed>1</user_seed>
 		</random>
@@ -330,6 +335,7 @@
 			<mat_mossy>0.0</mat_mossy>
 		</material>
 		<random>
+			<use_generate>True</use_generate>
 			<use_random_seed>True</use_random_seed>
 			<user_seed>1</user_seed>
 		</random>
@@ -389,6 +395,7 @@
 			<mat_mossy>0.0</mat_mossy>
 		</material>
 		<random>
+			<use_generate>True</use_generate>
 			<use_random_seed>True</use_random_seed>
 			<user_seed>1</user_seed>
 		</random>
diff --git a/add_mesh_rocks/rockgen.py b/add_mesh_rocks/rockgen.py
index 8a86fd95..b1efa622 100644
--- a/add_mesh_rocks/rockgen.py
+++ b/add_mesh_rocks/rockgen.py
@@ -1475,12 +1475,15 @@ class rocks(bpy.types.Operator):
                               description = "Amount of mossiness on the rocks",
                               min = 0.0, max = 1.0, default = defaults[25])
 
+    use_generate = BoolProperty(name = "Generate Rocks",
+                                description = "Enable actual generation.",
+                                default = defaults[26])
     use_random_seed = BoolProperty(name = "Use a random seed",
                                   description = "Create a seed based on time. Causes user seed to be ignored.",
-                                  default = defaults[26])
+                                  default = defaults[27])
     user_seed = IntProperty(name = "User seed",
                             description = "Use a specific seed for the generator.",
-                            min = 0, max = 1048576, default = defaults[27])
+                            min = 0, max = 1048576, default = defaults[28])
 
 
     def draw(self, context):
@@ -1521,6 +1524,7 @@ class rocks(bpy.types.Operator):
                 box.prop(self, 'mat_IOR')
             box.prop(self, 'mat_mossy')
         box = layout.box()
+        box.prop(self, 'use_generate')
         box.prop(self, 'use_random_seed')
         if not self.use_random_seed:
             box.prop(self, 'user_seed')
@@ -1555,42 +1559,44 @@ class rocks(bpy.types.Operator):
             self.mat_cloudy = float(self.presetsList[int(self.preset_values)][23])
             self.mat_IOR = float(self.presetsList[int(self.preset_values)][24])
             self.mat_mossy = float(self.presetsList[int(self.preset_values)][25])
-            self.use_random_seed = bool(self.presetsList[int(self.preset_values)][26])
-            self.user_seed = int(self.presetsList[int(self.preset_values)][27])
+            self.use_generate = bool(self.presetsList[int(self.preset_values)][26])
+            self.use_random_seed = bool(self.presetsList[int(self.preset_values)][27])
+            self.user_seed = int(self.presetsList[int(self.preset_values)][28])
             self.lastPreset = int(self.preset_values)
 
         # todo Add deform, deform_Var, rough, and rough_Var:
         #   *** todo completed 4/23/2011 ***
         #   *** Eliminated "deform_Var" and "rough_Var" so the script is not
         #       as complex to use.  May add in again as advanced features. ***
-        generateRocks(context,
-                      self.scale_X,
-                      self.skew_X,
-                      self.scale_Y,
-                      self.skew_Y,
-                      self.scale_Z,
-                      self.skew_Z,
-                      self.scale_fac,
-                      self.detail,
-                      self.display_detail,
-                      self.deform,
-                      self.rough,
-                      self.smooth_fac,
-                      self.smooth_it,
-                      self.mat_enable,
-                      self.mat_color,
-                      self.mat_bright,
-                      self.mat_rough,
-                      self.mat_spec,
-                      self.mat_hard,
-                      self.mat_use_trans,
-                      self.mat_alpha,
-                      self.mat_cloudy,
-                      self.mat_IOR,
-                      self.mat_mossy,
-                      self.num_of_rocks,
-                      self.user_seed,
-                      self.use_scale_dis,
-                      self.use_random_seed)
+        if self.use_generate:
+            generateRocks(context,
+                          self.scale_X,
+                          self.skew_X,
+                          self.scale_Y,
+                          self.skew_Y,
+                          self.scale_Z,
+                          self.skew_Z,
+                          self.scale_fac,
+                          self.detail,
+                          self.display_detail,
+                          self.deform,
+                          self.rough,
+                          self.smooth_fac,
+                          self.smooth_it,
+                          self.mat_enable,
+                          self.mat_color,
+                          self.mat_bright,
+                          self.mat_rough,
+                          self.mat_spec,
+                          self.mat_hard,
+                          self.mat_use_trans,
+                          self.mat_alpha,
+                          self.mat_cloudy,
+                          self.mat_IOR,
+                          self.mat_mossy,
+                          self.num_of_rocks,
+                          self.user_seed,
+                          self.use_scale_dis,
+                          self.use_random_seed)
 
         return {'FINISHED'}
diff --git a/add_mesh_rocks/settings.py b/add_mesh_rocks/settings.py
index 3c99c6b6..647a62d7 100644
--- a/add_mesh_rocks/settings.py
+++ b/add_mesh_rocks/settings.py
@@ -147,25 +147,29 @@ def parseNode(setting, title=True):
     loc += 2
 
     # Preset random values (xmlPreset.childNodes[9]):
-    if setting.childNodes[loc].childNodes[1].childNodes[0].data == 'False':
+    if setting.childNodes[loc].childNodes[1].childNodes[0].data == 'True':
+        use_generate = True
+    else:
+        use_generate = False
+    if setting.childNodes[loc].childNodes[3].childNodes[0].data == 'False':
         use_random_seed = False
     else:
         use_random_seed = True
-    user_seed = int(setting.childNodes[loc].childNodes[3].childNodes[0].data)
+    user_seed = int(setting.childNodes[loc].childNodes[5].childNodes[0].data)
 
     if title:
         parsed = [title, scaleX, scaleY, scaleZ, skewX, skewY, skewZ,
                   use_scale_dis, scale_fac, deform, rough, detail,
                   display_detail, smooth_fac, smooth_it, mat_enable, mat_color,
                   mat_bright, mat_rough, mat_spec, mat_hard, mat_use_trans,
-                  mat_alpha, mat_cloudy, mat_IOR, mat_mossy, use_random_seed,
-                  user_seed]
+                  mat_alpha, mat_cloudy, mat_IOR, mat_mossy, use_generate,
+                  use_random_seed, user_seed]
     else:
         parsed = [scaleX, scaleY, scaleZ, skewX, skewY, skewZ, use_scale_dis,
                   scale_fac, deform, rough, detail, display_detail, smooth_fac,
                   smooth_it, mat_enable, mat_color, mat_bright, mat_rough,
                   mat_spec, mat_hard, mat_use_trans, mat_alpha, mat_cloudy,
-                  mat_IOR, mat_mossy, use_random_seed, user_seed]
+                  mat_IOR, mat_mossy, use_generate, use_random_seed, user_seed]
 
     return parsed
 
-- 
GitLab