Improve brush node parsing
This commit is contained in:
@@ -7,6 +7,7 @@ class Brush {
|
||||
public static var customNodes = js.Syntax.code("new Map()");
|
||||
static var nodes: Array<TNode>;
|
||||
static var links: Array<TNodeLink>;
|
||||
static var tree: LogicTree;
|
||||
|
||||
static var parsed_nodes: Array<String> = null;
|
||||
static var parsed_labels: Map<String, String> = null;
|
||||
@@ -56,8 +57,7 @@ class Brush {
|
||||
return s;
|
||||
}
|
||||
|
||||
static var tree: LogicTree;
|
||||
public static function parse(canvas: TNodeCanvas, onAdd = true): LogicTree {
|
||||
public static function parse(canvas: TNodeCanvas, onAdd = true) {
|
||||
|
||||
nodes = canvas.nodes;
|
||||
links = canvas.links;
|
||||
@@ -76,13 +76,12 @@ class Brush {
|
||||
else {
|
||||
for (node in root_nodes) build_node(node);
|
||||
}
|
||||
return tree;
|
||||
}
|
||||
|
||||
static function build_node(node: TNode): String {
|
||||
|
||||
// Get node name
|
||||
var name = node_name(node);
|
||||
var name = node_name(node);
|
||||
|
||||
// Check if node already exists
|
||||
if (parsed_nodes.indexOf(name) != -1) {
|
||||
@@ -117,13 +116,20 @@ class Brush {
|
||||
if (l != null) {
|
||||
var n = getNode(l.from_id);
|
||||
var socket = n.outputs[l.from_socket];
|
||||
inp_node = nodeMap.get(build_node(n));
|
||||
for (i in 0...n.outputs.length) {
|
||||
if (n.outputs[i] == socket) {
|
||||
inp_from = i;
|
||||
break;
|
||||
// Ensure matching socket types
|
||||
if (socket.type == node.inputs[i].type) {
|
||||
inp_node = nodeMap.get(build_node(n));
|
||||
for (i in 0...n.outputs.length) {
|
||||
if (n.outputs[i] == socket) {
|
||||
inp_from = i;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
inp_node = build_default_node(inp);
|
||||
inp_from = 0;
|
||||
}
|
||||
}
|
||||
// Not linked - create node with default values
|
||||
else {
|
||||
|
||||
@@ -19,12 +19,30 @@ class BrushOutputNode extends LogicNode {
|
||||
var lastMask = Context.brushMaskImage;
|
||||
var lastStencil = Context.brushStencilImage;
|
||||
|
||||
Context.paintVec = inputs[0].get();
|
||||
Context.brushNodesRadius = inputs[1].get();
|
||||
Context.brushNodesScale = inputs[2].get();
|
||||
Context.brushNodesAngle = inputs[3].get();
|
||||
var input0: Dynamic;
|
||||
var input1: Dynamic;
|
||||
var input2: Dynamic;
|
||||
var input3: Dynamic;
|
||||
var input4: Dynamic;
|
||||
var input5: Dynamic;
|
||||
var input6: Dynamic;
|
||||
try {
|
||||
input0 = inputs[0].get();
|
||||
input1 = inputs[1].get();
|
||||
input2 = inputs[2].get();
|
||||
input3 = inputs[3].get();
|
||||
input4 = inputs[4].get();
|
||||
input5 = inputs[5].get();
|
||||
input6 = inputs[6].get();
|
||||
}
|
||||
catch (_) { return; }
|
||||
|
||||
var opac: Dynamic = inputs[4].get(); // Float or texture name
|
||||
Context.paintVec = input0;
|
||||
Context.brushNodesRadius = input1;
|
||||
Context.brushNodesScale = input2;
|
||||
Context.brushNodesAngle = input3;
|
||||
|
||||
var opac: Dynamic = input4; // Float or texture name
|
||||
if (opac == null) opac = 1.0;
|
||||
if (Std.is(opac, String)) {
|
||||
Context.brushNodesOpacity = 1.0;
|
||||
@@ -37,9 +55,9 @@ class BrushOutputNode extends LogicNode {
|
||||
Context.brushMaskImage = null;
|
||||
}
|
||||
|
||||
Context.brushNodesHardness = inputs[5].get();
|
||||
Context.brushNodesHardness = input5;
|
||||
|
||||
var stencil: Dynamic = inputs[6].get(); // Float or texture name
|
||||
var stencil: Dynamic = input6; // Float or texture name
|
||||
if (stencil == null) stencil = 1.0;
|
||||
if (Std.is(stencil, String)) {
|
||||
var index = Project.assetNames.indexOf(stencil);
|
||||
|
||||
Reference in New Issue
Block a user