From 2a5c249e3c6c2ab1737c3c17c35a8860c6349aee Mon Sep 17 00:00:00 2001 From: luboslenco Date: Mon, 27 Apr 2020 19:33:35 +0200 Subject: [PATCH] Custom brush nodes --- Sources/arm/Plugin.hx | 2 ++ Sources/arm/node/{Logic.hx => Brush.hx} | 10 ++++++++-- Sources/arm/node/MaterialParser.hx | 3 +-- Sources/arm/util/RenderUtil.hx | 5 +++++ 4 files changed, 16 insertions(+), 4 deletions(-) rename Sources/arm/node/{Logic.hx => Brush.hx} (95%) diff --git a/Sources/arm/Plugin.hx b/Sources/arm/Plugin.hx index e5ab2eff..37e964ef 100644 --- a/Sources/arm/Plugin.hx +++ b/Sources/arm/Plugin.hx @@ -78,7 +78,9 @@ class ArmBridge { public static var Path = arm.sys.Path; public static var File = arm.sys.File; public static var NodesMaterial = arm.node.NodesMaterial; + public static var NodesBrush = arm.node.NodesBrush; public static var Material = arm.node.Material; + public static var Brush = arm.node.Brush; public static var UISidebar = arm.ui.UISidebar; public static var UINodes = arm.ui.UINodes; public static var UIFiles = arm.ui.UIFiles; diff --git a/Sources/arm/node/Logic.hx b/Sources/arm/node/Brush.hx similarity index 95% rename from Sources/arm/node/Logic.hx rename to Sources/arm/node/Brush.hx index 7f8691e6..c1f75ed0 100644 --- a/Sources/arm/node/Logic.hx +++ b/Sources/arm/node/Brush.hx @@ -2,8 +2,9 @@ package arm.node; import zui.Nodes; -class Logic { +class Brush { + public static var customNodes = untyped __js__("new Map()"); static var nodes: Array; static var links: Array; @@ -11,7 +12,7 @@ class Logic { static var parsed_labels: Map = null; static var nodeMap: Map; - public static var packageName = "arm.node.logic"; + public static var packageName = "arm.node.brush"; public static function getNode(id: Int): TNode { for (n in nodes) if (n.id == id) return n; @@ -218,6 +219,11 @@ class Logic { } static function createClassInstance(className: String, args: Array): Dynamic { + if (customNodes.get(className) != null) { + var node = new LogicNode(args[0]); + untyped node.get = customNodes.get(className); + return node; + } var cname = Type.resolveClass(packageName + "." + className); if (cname == null) return null; return Type.createInstance(cname, args); diff --git a/Sources/arm/node/MaterialParser.hx b/Sources/arm/node/MaterialParser.hx index 38643a64..ca315a87 100644 --- a/Sources/arm/node/MaterialParser.hx +++ b/Sources/arm/node/MaterialParser.hx @@ -161,7 +161,6 @@ class MaterialParser { } public static function parseBrush() { - Logic.packageName = "arm.node.brush"; - Logic.parse(Context.brush.canvas, false); + Brush.parse(Context.brush.canvas, false); } } diff --git a/Sources/arm/util/RenderUtil.hx b/Sources/arm/util/RenderUtil.hx index 70949903..402b4157 100644 --- a/Sources/arm/util/RenderUtil.hx +++ b/Sources/arm/util/RenderUtil.hx @@ -189,6 +189,9 @@ class RenderUtil { if (RenderPathPaint.liveLayerLocked) return; + var current = @:privateAccess kha.graphics4.Graphics2.current; + if (current != null) current.end(); + // Prepare layers if (RenderPathPaint.liveLayer == null) { RenderPathPaint.liveLayer = new arm.data.LayerSlot("_live"); @@ -366,5 +369,7 @@ class RenderUtil { Context.brush.previewReady = true; Context.brushBlendDirty = true; + + if (current != null) current.begin(false); } }