[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