From b3474effc63f97b851c4c9bd3f50043ab8b5be24 Mon Sep 17 00:00:00 2001 From: Adam Johnson Date: Wed, 20 Dec 2017 20:28:37 -0500 Subject: [PATCH 1/2] Allow custom names for ladder stems --- korman/operators/op_mesh.py | 47 +++++++++++++++++++++++++------------ 1 file changed, 32 insertions(+), 15 deletions(-) diff --git a/korman/operators/op_mesh.py b/korman/operators/op_mesh.py index 408f3ba..51534e3 100644 --- a/korman/operators/op_mesh.py +++ b/korman/operators/op_mesh.py @@ -31,6 +31,11 @@ class PlasmaAddLadderMeshOperator(PlasmaMeshOperator, bpy.types.Operator): bl_description = "Adds a new Plasma Ladder" bl_options = {"REGISTER", "UNDO"} + # Allows user to specify their own name stem + ladder_name = bpy.props.StringProperty(name="Name", + description="Ladder name stem", + default="Ladder") + # Basic stats ladder_height = bpy.props.FloatProperty(name="Height", description="Height of ladder in feet", @@ -74,10 +79,16 @@ class PlasmaAddLadderMeshOperator(PlasmaMeshOperator, bpy.types.Operator): def draw(self, context): layout = self.layout space = bpy.context.space_data - if (not space.local_view): + + if not space.local_view: box = layout.box() - box.label("Geometry:") + box.label("Ladder Name:") + row = box.row() + row.alert = not self.ladder_name + row.prop(self, "ladder_name", text="") + box = layout.box() + box.label("Geometry:") row = box.row() row.alert = self.ladder_height % 2 != 0 row.prop(self, "ladder_height") @@ -116,13 +127,12 @@ class PlasmaAddLadderMeshOperator(PlasmaMeshOperator, bpy.types.Operator): row.label("Warning: Operator does not work in local view mode", icon="ERROR") def execute(self, context): - if bpy.context.mode == "OBJECT": + if context.mode == "OBJECT": self.create_ladder_objects() - return {"FINISHED"} else: self.report({"WARNING"}, "Ladder creation only valid in Object mode") return {"CANCELLED"} - + return {"FINISHED"} def create_guide_rungs(self): bpyscene = bpy.context.scene @@ -146,8 +156,8 @@ class PlasmaAddLadderMeshOperator(PlasmaMeshOperator, bpy.types.Operator): for rung_num in range(0, int(self.ladder_height)): side = "L" if (rung_num % 2) == 0 else "R" - mesh = bpy.data.meshes.new("LadderRung_{}_{}".format(side, rung_num)) - rungs = bpy.data.objects.new("LadderRung_{}_{}".format(side, rung_num), mesh) + mesh = bpy.data.meshes.new("{}_Rung_{}_{}".format(self.name_stem, side, rung_num)) + rungs = bpy.data.objects.new("{}_Rung_{}_{}".format(self.name_stem, side, rung_num), mesh) rungs.hide_render = True rungs.draw_type = "BOUNDS" @@ -174,8 +184,9 @@ class PlasmaAddLadderMeshOperator(PlasmaMeshOperator, bpy.types.Operator): cursor_shift = mathutils.Matrix.Translation(bpy.context.scene.cursor_location) # Create an empty mesh and the object. - mesh = bpy.data.meshes.new("LadderBack") - back = bpy.data.objects.new("LadderBack", mesh) + name = "{}_Back".format(self.name_stem) + mesh = bpy.data.meshes.new(name) + back = bpy.data.objects.new(name, mesh) back.hide_render = True back.draw_type = "BOUNDS" @@ -205,8 +216,9 @@ class PlasmaAddLadderMeshOperator(PlasmaMeshOperator, bpy.types.Operator): for pos in ("Upper", "Lower"): # Create an empty mesh and the object. - mesh = bpy.data.meshes.new("LadderGround_{}".format(pos)) - ground = bpy.data.objects.new("LadderGround_{}".format(pos), mesh) + name = "{}_Ground_{}".format(self.name_stem, pos) + mesh = bpy.data.meshes.new(name) + ground = bpy.data.objects.new(name, mesh) ground.hide_render = True ground.draw_type = "BOUNDS" @@ -238,8 +250,9 @@ class PlasmaAddLadderMeshOperator(PlasmaMeshOperator, bpy.types.Operator): cursor_shift = mathutils.Matrix.Translation(bpy.context.scene.cursor_location) # Create an empty mesh and the object. - mesh = bpy.data.meshes.new("LadderEntry_Upper") - upper_rgn = bpy.data.objects.new("LadderEntry_Upper", mesh) + name = "{}_Entry_Upper".format(self.name_stem) + mesh = bpy.data.meshes.new(name) + upper_rgn = bpy.data.objects.new(name, mesh) upper_rgn.hide_render = True upper_rgn.draw_type = "WIRE" @@ -278,8 +291,9 @@ class PlasmaAddLadderMeshOperator(PlasmaMeshOperator, bpy.types.Operator): cursor_shift = mathutils.Matrix.Translation(bpy.context.scene.cursor_location) # Create an empty mesh and the object. - mesh = bpy.data.meshes.new("LadderEntry_Lower") - lower_rgn = bpy.data.objects.new("LadderEntry_Lower", mesh) + name = "{}_Entry_Lower".format(self.name_stem) + mesh = bpy.data.meshes.new(name) + lower_rgn = bpy.data.objects.new(name, mesh) lower_rgn.hide_render = True lower_rgn.draw_type = "WIRE" @@ -334,6 +348,9 @@ class PlasmaAddLadderMeshOperator(PlasmaMeshOperator, bpy.types.Operator): bpy.ops.group.create(name="LadderGroup") bpy.ops.group.objects_add_active() + @property + def name_stem(self): + return self.ladder_name if self.ladder_name else "Ladder" def origin_to_bottom(obj): # Modified from https://blender.stackexchange.com/a/42110/3055 From 91f38b519bca1dbdf334c117565244e46132dddb Mon Sep 17 00:00:00 2001 From: Adam Johnson Date: Wed, 20 Dec 2017 20:50:49 -0500 Subject: [PATCH 2/2] Thou shalt not animate mine operator... --- korman/operators/op_mesh.py | 37 ++++++++++++++++++++++++------------- 1 file changed, 24 insertions(+), 13 deletions(-) diff --git a/korman/operators/op_mesh.py b/korman/operators/op_mesh.py index 51534e3..6ab93d0 100644 --- a/korman/operators/op_mesh.py +++ b/korman/operators/op_mesh.py @@ -34,47 +34,58 @@ class PlasmaAddLadderMeshOperator(PlasmaMeshOperator, bpy.types.Operator): # Allows user to specify their own name stem ladder_name = bpy.props.StringProperty(name="Name", description="Ladder name stem", - default="Ladder") - + default="Ladder", + options=set()) # Basic stats ladder_height = bpy.props.FloatProperty(name="Height", description="Height of ladder in feet", min=6, max=1000, step=200, precision=0, default=6, - unit="LENGTH", subtype="DISTANCE") + unit="LENGTH", subtype="DISTANCE", + options=set()) ladder_width = bpy.props.FloatProperty(name="Width", description="Width of ladder in inches", - min=30, max=42, step=100, precision=0, default=30) + min=30, max=42, step=100, precision=0, default=30, + options=set()) rung_height = bpy.props.FloatProperty(name="Rung height", description="Height of rungs in inches", - min=1, max=6, step=100, precision=0, default=6) + min=1, max=6, step=100, precision=0, default=6, + options=set()) # Template generation gen_back_guide = bpy.props.BoolProperty(name="Ladder", description="Generates helper object where ladder back should be placed", - default=True) + default=True, + options=set()) gen_ground_guides = bpy.props.BoolProperty(name="Ground", description="Generates helper objects where ground should be placed", - default=True) + default=True, + options=set()) gen_rung_guides = bpy.props.BoolProperty(name="Rungs", description="Generates helper objects where rungs should be placed", - default=True) + default=True, + options=set()) rung_width_type = bpy.props.EnumProperty(name="Rung Width", description="Type of rungs to generate", items=[("FULL", "Full Width Rungs", "The rungs cross the entire width of the ladder"), ("HALF", "Half Width Rungs", "The rungs only cross half the ladder's width, on the side where the avatar will contact them"),], - default="FULL") + default="FULL", + options=set()) # Game options has_upper_entry = bpy.props.BoolProperty(name="Has Upper Entry Point", description="Specifies whether the ladder has an upper entry", - default=True) + default=True, + options=set()) upper_entry_enabled = bpy.props.BoolProperty(name="Upper Entry Enabled", description="Specifies whether the ladder's upper entry is enabled by default at Age start", - default=True) + default=True, + options=set()) has_lower_entry = bpy.props.BoolProperty(name="Has Lower Entry Point", description="Specifies whether the ladder has a lower entry", - default=True) + default=True, + options=set()) lower_entry_enabled = bpy.props.BoolProperty(name="Lower Entry Enabled", description="Specifies whether the ladder's lower entry is enabled by default at Age start", - default=True) + default=True, + options=set()) def draw(self, context): layout = self.layout