[Bf-blender-cvs] [30c6880fe00] functions: initial gravity force node ui

Jacques Lucke noreply at git.blender.org
Fri Jul 5 17:39:00 CEST 2019


Commit: 30c6880fe00b5c90555c918ef248dd43d2f594d3
Author: Jacques Lucke
Date:   Fri Jul 5 16:39:29 2019 +0200
Branches: functions
https://developer.blender.org/rB30c6880fe00b5c90555c918ef248dd43d2f594d3

initial gravity force node ui

===================================================================

A	release/scripts/startup/nodes/bparticle_nodes/gravity_force.py
M	release/scripts/startup/nodes/bparticle_nodes/particle_type.py
M	release/scripts/startup/nodes/declaration/__init__.py
M	release/scripts/startup/nodes/declaration/bparticles.py
M	release/scripts/startup/nodes/socket_builder.py
M	release/scripts/startup/nodes/sockets.py

===================================================================

diff --git a/release/scripts/startup/nodes/bparticle_nodes/gravity_force.py b/release/scripts/startup/nodes/bparticle_nodes/gravity_force.py
new file mode 100644
index 00000000000..a0e7722905f
--- /dev/null
+++ b/release/scripts/startup/nodes/bparticle_nodes/gravity_force.py
@@ -0,0 +1,12 @@
+import bpy
+from bpy.props import *
+from .. base import BParticlesNode
+from .. socket_builder import SocketBuilder
+
+class GravityForceNode(bpy.types.Node, BParticlesNode):
+    bl_idname = "bp_GravityForceNode"
+    bl_label = "Gravity Force"
+
+    def declaration(self, builder : SocketBuilder):
+        builder.fixed_input("direction", "Direction", "Vector")
+        builder.particle_modifier_output("force", "Force")
diff --git a/release/scripts/startup/nodes/bparticle_nodes/particle_type.py b/release/scripts/startup/nodes/bparticle_nodes/particle_type.py
index 35f711e3e41..99e331bdc9a 100644
--- a/release/scripts/startup/nodes/bparticle_nodes/particle_type.py
+++ b/release/scripts/startup/nodes/bparticle_nodes/particle_type.py
@@ -8,4 +8,5 @@ class ParticleTypeNode(bpy.types.Node, BParticlesNode):
 
     def declaration(self, builder : SocketBuilder):
         builder.emitter_input("emitters", "Emitters")
+        builder.particle_modifier_input("modifiers", "Modifiers")
         builder.event_output("events", "Events")
diff --git a/release/scripts/startup/nodes/declaration/__init__.py b/release/scripts/startup/nodes/declaration/__init__.py
index a72662ff305..210cdfba26f 100644
--- a/release/scripts/startup/nodes/declaration/__init__.py
+++ b/release/scripts/startup/nodes/declaration/__init__.py
@@ -4,4 +4,10 @@ from . pack_list import PackListDecl
 from . tree_interface import TreeInterfaceDecl
 from . variadic import AnyVariadicDecl
 from . vectorized import VectorizedInputDecl, VectorizedOutputDecl
-from . bparticles import EmitterSocketDecl, EventSocketDecl, ControlFlowSocketDecl
+
+from . bparticles import (
+    EmitterSocketDecl,
+    EventSocketDecl,
+    ControlFlowSocketDecl,
+    ParticleModifierSocketDecl,
+)
diff --git a/release/scripts/startup/nodes/declaration/bparticles.py b/release/scripts/startup/nodes/declaration/bparticles.py
index 8f1d16bc9da..85b1b70fe3e 100644
--- a/release/scripts/startup/nodes/declaration/bparticles.py
+++ b/release/scripts/startup/nodes/declaration/bparticles.py
@@ -85,3 +85,29 @@ class ControlFlowSocketDecl(SocketDeclBase):
 
     def amount(self):
         return 1
+
+class ParticleModifierSocketDecl(SocketDeclBase):
+    def __init__(self, node, identifier: str, display_name: str):
+        self.node = node
+        self.identifier = identifier
+        self.display_name = display_name
+
+    def build(self, node_sockets):
+        socket = node_sockets.new("bp_ParticleModifierSocket", self.display_name, identifier=self.identifier)
+        socket.link_limit = MAX_LINK_LIMIT
+        return [socket]
+
+    def validate(self, sockets):
+        if len(sockets) != 1:
+            return False
+        socket = sockets[0]
+        if socket.bl_idname != "bp_ParticleModifierSocket":
+            return False
+        if socket.name != self.display_name:
+            return False
+        if socket.link_limit != MAX_LINK_LIMIT:
+            return False
+        return True
+
+    def amount(self):
+        return 1
diff --git a/release/scripts/startup/nodes/socket_builder.py b/release/scripts/startup/nodes/socket_builder.py
index 438d3cb85fa..4154605e138 100644
--- a/release/scripts/startup/nodes/socket_builder.py
+++ b/release/scripts/startup/nodes/socket_builder.py
@@ -197,6 +197,14 @@ class SocketBuilder:
         decl = ControlFlowSocketDecl(self.node, identifier, name)
         self._add_output(decl)
 
+    def particle_modifier_input(self, identifier, name):
+        decl = ControlFlowSocketDecl(self.node, identifier, name)
+        self._add_input(decl)
+
+    def particle_modifier_output(self, identifier, name):
+        decl = ControlFlowSocketDecl(self.node, identifier, name)
+        self._add_output(decl)
+
 
 class SocketDeclMap:
     def __init__(self, node, input_declarations, output_declarations):
diff --git a/release/scripts/startup/nodes/sockets.py b/release/scripts/startup/nodes/sockets.py
index 166832a69e5..a233b26b25f 100644
--- a/release/scripts/startup/nodes/sockets.py
+++ b/release/scripts/startup/nodes/sockets.py
@@ -110,3 +110,10 @@ class ControlFlowSocket(bpy.types.NodeSocket, BaseSocket):
 
     def draw_color(self, context, node):
         return (0.8, 0.2, 0.2, 1)
+
+class ParticleModifierSocket(bpy.types.NodeSocket, BaseSocket):
+    bl_idname = "bp_ParticleModifierSocket"
+    bl_label = "Particle Modifier Socket"
+
+    def draw_color(self, context, node):
+        return (0.8, 0.8, 0.2, 1)



More information about the Bf-blender-cvs mailing list