From 57587281119f5f002d5d37458b190c4b591713cd Mon Sep 17 00:00:00 2001 From: Florian Heinrich Date: Wed, 21 Apr 2021 14:41:17 +0200 Subject: [PATCH] Brush math node: fix Absolute bug and add missing operations --- Sources/arm/node/NodesBrush.hx | 2 +- Sources/arm/node/brush/MathNode.hx | 14 ++++++++++++-- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/Sources/arm/node/NodesBrush.hx b/Sources/arm/node/NodesBrush.hx index af0bdc2c..d910aa1c 100644 --- a/Sources/arm/node/NodesBrush.hx +++ b/Sources/arm/node/NodesBrush.hx @@ -212,7 +212,7 @@ class NodesBrush { { name: _tr("operation"), type: "ENUM", - data: ["Add", "Subtract", "Multiply", "Divide", "Sine", "Cosine", "Tangent", "Arcsine", "Arccosine", "Arctangent", "Power", "Logarithm", "Minimum", "Maximum", "Round", "Less Than", "Greater Than", "Module", "Absolute"], + data: ["Add", "Subtract", "Multiply", "Divide", "Power", "Logarithm", "Square Root", "Absolute", "Minimum", "Maximum", "Less Than", "Greater Than", "Round", "Floor", "Ceil", "Fract", "Modulo", "Sine", "Cosine", "Tangent", "Arcsine", "Arccosine", "Arctangent", "Arctan2"], default_value: 0, output: 0 }, diff --git a/Sources/arm/node/brush/MathNode.hx b/Sources/arm/node/brush/MathNode.hx index 3b8b34bd..d904152b 100644 --- a/Sources/arm/node/brush/MathNode.hx +++ b/Sources/arm/node/brush/MathNode.hx @@ -28,12 +28,12 @@ class MathNode extends LogicNode { f = Math.max(v1, v2); case "Min": f = Math.min(v1, v2); - case "Abs": + case "Absolute": f = Math.abs(v1); case "Subtract": f = v1 - v2; case "Divide": - f = v1 / v2; + f = v1 / (v2 == 0.0 ? 0.000001 : v2); case "Tangent": f = Math.tan(v1); case "Arcsine": @@ -42,18 +42,28 @@ class MathNode extends LogicNode { f = Math.acos(v1); case "Arctangent": f = Math.atan(v1); + case "Arctan2": + f = Math.atan2(v2,v1); case "Power": f = Math.pow(v1, v2); case "Logarithm": f = Math.log(v1); case "Round": f = Math.round(v1); + case "Floor": + f = Math.floor(v1); + case "Ceil": + f = Math.ceil(v1); + case "Fract": + f = v1 - Math.floor(v1); case "Less Than": f = v1 < v2 ? 1.0 : 0.0; case "Greater Than": f = v1 > v2 ? 1.0 : 0.0; case "Modulo": f = v1 % v2; + case "Square Root": + f = Math.sqrt(v1); } if (use_clamp) f = f < 0.0 ? 0.0 : (f > 1.0 ? 1.0 : f);