[Bf-blender-cvs] [5841005187b] functions: add buttons to create particle type nodes
Jacques Lucke
noreply at git.blender.org
Tue Jul 30 15:06:30 CEST 2019
Commit: 5841005187b0f7a2ee4c1678285136da227aaf25
Author: Jacques Lucke
Date: Tue Jul 30 14:28:27 2019 +0200
Branches: functions
https://developer.blender.org/rB5841005187b0f7a2ee4c1678285136da227aaf25
add buttons to create particle type nodes
===================================================================
M release/scripts/startup/nodes/base.py
M release/scripts/startup/nodes/bparticle_nodes/explode_particle.py
M release/scripts/startup/nodes/bparticle_nodes/trails.py
===================================================================
diff --git a/release/scripts/startup/nodes/base.py b/release/scripts/startup/nodes/base.py
index 310e165287e..a8b2adb8aa4 100644
--- a/release/scripts/startup/nodes/base.py
+++ b/release/scripts/startup/nodes/base.py
@@ -211,7 +211,23 @@ class FunctionNode(BaseNode):
pass
class BParticlesNode(BaseNode):
- pass
+ def invoke_particle_type_creation(self, layout, function_name, text, *, icon='NONE'):
+ self.invoke_function(layout, "create_particle_type", text, icon=icon, settings=(function_name,))
+
+ def create_particle_type(self, function_name):
+ for node in self.tree.nodes:
+ node.select = False
+
+ new_node = self.tree.nodes.new("bp_ParticleTypeNode")
+ new_node.select = True
+ self.tree.nodes.active = new_node
+ new_node.location = self.location
+ new_node.location.x += 10
+ new_node.location.y += 10
+
+ callback = getattr(self, function_name)
+ callback(new_node)
+ bpy.ops.node.translate_attach('INVOKE_DEFAULT')
class DataSocket(BaseSocket):
def draw_self(self, layout, node, text):
diff --git a/release/scripts/startup/nodes/bparticle_nodes/explode_particle.py b/release/scripts/startup/nodes/bparticle_nodes/explode_particle.py
index ece49099d67..c8238b7bc98 100644
--- a/release/scripts/startup/nodes/bparticle_nodes/explode_particle.py
+++ b/release/scripts/startup/nodes/bparticle_nodes/explode_particle.py
@@ -16,4 +16,10 @@ class ExplodeParticleNode(bpy.types.Node, BParticlesNode):
builder.control_flow_output("control_out", "(Out)")
def draw(self, layout):
- layout.prop(self, "particle_type_name", text="", icon="MOD_PARTICLES")
+ row = layout.row(align=True)
+ row.prop(self, "particle_type_name", text="", icon="MOD_PARTICLES")
+ self.invoke_particle_type_creation(row, "on_type_created", "", icon='ADD')
+
+ def on_type_created(self, new_node):
+ new_node.name = "Exploded"
+ self.particle_type_name = new_node.name
diff --git a/release/scripts/startup/nodes/bparticle_nodes/trails.py b/release/scripts/startup/nodes/bparticle_nodes/trails.py
index 510bc20e250..dafada599e1 100644
--- a/release/scripts/startup/nodes/bparticle_nodes/trails.py
+++ b/release/scripts/startup/nodes/bparticle_nodes/trails.py
@@ -7,11 +7,17 @@ class ParticleTrailsNode(bpy.types.Node, BParticlesNode):
bl_idname = "bp_ParticleTrailsNode"
bl_label = "Particle Trails"
- particle_type_name: StringProperty()
+ particle_type_name: StringProperty(maxlen=64)
def declaration(self, builder: NodeBuilder):
- builder.fixed_input("rate", "Rate", "Float", default=10)
+ builder.fixed_input("rate", "Rate", "Float", default=20)
builder.particle_effector_output("effect", "Effect")
def draw(self, layout):
- layout.prop(self, "particle_type_name", text="", icon="MOD_PARTICLES")
+ row = layout.row(align=True)
+ row.prop(self, "particle_type_name", text="", icon="MOD_PARTICLES")
+ self.invoke_particle_type_creation(row, "on_type_created", "", icon='ADD')
+
+ def on_type_created(self, new_node):
+ new_node.name = "Trails"
+ self.particle_type_name = new_node.name
More information about the Bf-blender-cvs
mailing list