[Bf-blender-cvs] [ec7054772bf] functions: utility operators to create emitter and particle system trees
Jacques Lucke
noreply at git.blender.org
Tue Jul 16 18:20:35 CEST 2019
Commit: ec7054772bf231b8f1b04ec110571cc5cde6445a
Author: Jacques Lucke
Date: Tue Jul 16 17:33:13 2019 +0200
Branches: functions
https://developer.blender.org/rBec7054772bf231b8f1b04ec110571cc5cde6445a
utility operators to create emitter and particle system trees
===================================================================
M release/scripts/startup/bl_operators/modifiers.py
M release/scripts/startup/bl_ui/properties_data_modifier.py
M release/scripts/startup/nodes/bparticle_nodes/custom_emitter.py
===================================================================
diff --git a/release/scripts/startup/bl_operators/modifiers.py b/release/scripts/startup/bl_operators/modifiers.py
index 1f8e47428b6..cc60a7341e6 100644
--- a/release/scripts/startup/bl_operators/modifiers.py
+++ b/release/scripts/startup/bl_operators/modifiers.py
@@ -58,7 +58,33 @@ class NewPointGeneratorFunction(bpy.types.Operator, ModifierOperator):
mod.function_tree = tree
return {'FINISHED'}
+class NewBParticlesTree(bpy.types.Operator, ModifierOperator):
+ bl_idname = "bp.new_bparticles_tree"
+ bl_label = "New BParticles Tree"
+
+ def execute(self, context):
+ mod = self.get_modifier()
+ if mod is None:
+ return {'CANCELLED'}
+
+ tree = bpy.data.node_groups.new("Particle System", "BParticlesTree")
+
+ type_node = tree.nodes.new("bp_ParticleTypeNode")
+
+ emitter_node = tree.nodes.new("bp_PointEmitterNode")
+ emitter_node.location = (-250, 100)
+
+ gravity_node = tree.nodes.new("bp_GravityForceNode")
+ gravity_node.location = (-250, -100)
+
+ tree.links.new(emitter_node.outputs[0], type_node.inputs[0])
+ tree.links.new(gravity_node.outputs[0], type_node.inputs[1])
+
+ mod.bparticles_tree = tree
+ return {'FINISHED'}
+
classes = (
NewDeformationFunction,
NewPointGeneratorFunction,
+ NewBParticlesTree,
)
diff --git a/release/scripts/startup/bl_ui/properties_data_modifier.py b/release/scripts/startup/bl_ui/properties_data_modifier.py
index c755f0fff2a..9605f0d1394 100644
--- a/release/scripts/startup/bl_ui/properties_data_modifier.py
+++ b/release/scripts/startup/bl_ui/properties_data_modifier.py
@@ -1662,7 +1662,12 @@ class DATA_PT_modifiers(ModifierButtonsPanel, Panel):
props.modifier_name = md.name
def BPARTICLES(self, layout, ob, md):
- layout.prop(md, "bparticles_tree")
+ row = layout.row(align=True)
+ row.prop(md, "bparticles_tree")
+ props = row.operator("bp.new_bparticles_tree", text="", icon="ADD")
+ props.object_name = ob.name
+ props.modifier_name = md.name
+
layout.operator("object.bparticles_clear_cache", text="Clear Cache")
diff --git a/release/scripts/startup/nodes/bparticle_nodes/custom_emitter.py b/release/scripts/startup/nodes/bparticle_nodes/custom_emitter.py
index 859dab80695..aed71ca419f 100644
--- a/release/scripts/startup/nodes/bparticle_nodes/custom_emitter.py
+++ b/release/scripts/startup/nodes/bparticle_nodes/custom_emitter.py
@@ -2,6 +2,7 @@ import bpy
from bpy.props import *
from .. base import FunctionNode
from .. socket_builder import SocketBuilder
+from .. node_operators import new_function_tree
class CustomEmitterNode(bpy.types.Node, FunctionNode):
bl_idname = "bp_CustomEmitterNode"
@@ -21,7 +22,20 @@ class CustomEmitterNode(bpy.types.Node, FunctionNode):
builder.emitter_output("emitter", "Emitter")
def draw(self, layout):
- layout.prop(self, "function_tree", text="")
+ row = layout.row(align=True)
+ row.prop(self, "function_tree", text="")
+ if self.function_tree is None:
+ self.invoke_function(row, "new_function", "", icon='PLUS')
+
+ def new_function(self):
+ self.function_tree = new_function_tree("Custom Emitter", [
+ ("Float", "Start Time"),
+ ("Float", "Time Step"),
+ ], [
+ ("Vector List", "Position"),
+ ("Vector List", "Velocity"),
+ ("Float List", "Size"),
+ ])
def iter_dependency_trees(self):
if self.function_tree is not None:
More information about the Bf-blender-cvs
mailing list