[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