72 lines
2.3 KiB
Python
72 lines
2.3 KiB
Python
import bpy
|
|
from bpy.props import *
|
|
from .. base import FunctionNode
|
|
from .. node_builder import NodeBuilder
|
|
|
|
|
|
class VectorFromValueNode(bpy.types.Node, FunctionNode):
|
|
bl_idname = "fn_VectorFromValueNode"
|
|
bl_label = "Vector from Value"
|
|
|
|
use_list__value: NodeBuilder.VectorizedProperty()
|
|
|
|
def declaration(self, builder: NodeBuilder):
|
|
builder.vectorized_input("value", "use_list__value", "Value", "Values", "Float")
|
|
builder.vectorized_output("vector", ["use_list__value"], "Vector", "Vectors", "Vector")
|
|
|
|
|
|
class CombineVectorNode(bpy.types.Node, FunctionNode):
|
|
bl_idname = "fn_CombineVectorNode"
|
|
bl_label = "Combine Vector"
|
|
|
|
use_list__x: NodeBuilder.VectorizedProperty()
|
|
use_list__y: NodeBuilder.VectorizedProperty()
|
|
use_list__z: NodeBuilder.VectorizedProperty()
|
|
|
|
def declaration(self, builder):
|
|
builder.vectorized_input(
|
|
"x", "use_list__x",
|
|
"X", "X", "Float")
|
|
builder.vectorized_input(
|
|
"y", "use_list__y",
|
|
"Y", "Y", "Float")
|
|
builder.vectorized_input(
|
|
"z", "use_list__z",
|
|
"Z", "Z", "Float")
|
|
|
|
builder.vectorized_output(
|
|
"vector", ["use_list__x", "use_list__y", "use_list__z"],
|
|
"Vector", "Vectors", "Vector")
|
|
|
|
|
|
class SeparateVectorNode(bpy.types.Node, FunctionNode):
|
|
bl_idname = "fn_SeparateVectorNode"
|
|
bl_label = "Separate Vector"
|
|
|
|
use_list__vector: NodeBuilder.VectorizedProperty()
|
|
|
|
def declaration(self, builder: NodeBuilder):
|
|
builder.vectorized_input(
|
|
"vector", "use_list__vector",
|
|
"Vector", "Vectors", "Vector")
|
|
|
|
builder.vectorized_output(
|
|
"x", ["use_list__vector"],
|
|
"X", "X", "Float")
|
|
builder.vectorized_output(
|
|
"y", ["use_list__vector"],
|
|
"Y", "Y", "Float")
|
|
builder.vectorized_output(
|
|
"z", ["use_list__vector"],
|
|
"Z", "Z", "Float")
|
|
|
|
|
|
class FindNonClosePointsNode(bpy.types.Node, FunctionNode):
|
|
bl_idname = "fn_FindNonClosePointsNode"
|
|
bl_label = "Find Non Close Point"
|
|
|
|
def declaration(self, builder: NodeBuilder):
|
|
builder.fixed_input("points", "Points", "Vector List")
|
|
builder.fixed_input("min_distance", "Min Distance", "Float", default=0.1)
|
|
builder.fixed_output("indices", "Indices", "Integer List")
|