From 2625144945e42da581a2285a1d81e280bb3561b5 Mon Sep 17 00:00:00 2001 From: nothingTVatYT <34131388+nothingTVatYT@users.noreply.github.com> Date: Sun, 28 Jan 2024 23:28:35 +0100 Subject: [PATCH] rename attribute and fix parsing --- .../CustomEditors/Editors/DoubleEditor.cs | 6 ++--- .../CustomEditors/Editors/FloatEditor.cs | 6 ++--- .../CustomEditors/Editors/Vector3Editor.cs | 6 ++--- .../Elements/DoubleValueElement.cs | 2 +- .../Elements/FloatValueElement.cs | 2 +- Source/Editor/GUI/Input/DoubleValueBox.cs | 2 +- Source/Editor/GUI/Input/FloatValueBox.cs | 2 +- Source/Editor/Utilities/ShuntingYardParser.cs | 8 +++--- Source/Editor/Utilities/Utils.cs | 26 ++++++------------- ...ttribute.cs => NumberCategoryAttribute.cs} | 12 ++++----- Source/Engine/Utilities/Utils.cs | 10 +++++++ 11 files changed, 42 insertions(+), 40 deletions(-) rename Source/Engine/Scripting/Attributes/Editor/{ValueCategoryAttribute.cs => NumberCategoryAttribute.cs} (64%) diff --git a/Source/Editor/CustomEditors/Editors/DoubleEditor.cs b/Source/Editor/CustomEditors/Editors/DoubleEditor.cs index 0906d22af..a428fd448 100644 --- a/Source/Editor/CustomEditors/Editors/DoubleEditor.cs +++ b/Source/Editor/CustomEditors/Editors/DoubleEditor.cs @@ -4,7 +4,7 @@ using System; using System.Linq; using FlaxEditor.CustomEditors.Elements; using FlaxEngine; -using Utils = FlaxEditor.Utilities.Utils; +using Utils = FlaxEngine.Utils; namespace FlaxEditor.CustomEditors.Editors { @@ -26,8 +26,8 @@ namespace FlaxEditor.CustomEditors.Editors // Try get limit attribute for value min/max range setting and slider speed var attributes = Values.GetAttributes(); - var categoryAttribute = attributes.FirstOrDefault(x => x is ValueCategoryAttribute); - var valueCategory = ((ValueCategoryAttribute)categoryAttribute)?.Category ?? Utils.ValueCategory.None; + var categoryAttribute = attributes.FirstOrDefault(x => x is NumberCategoryAttribute); + var valueCategory = ((NumberCategoryAttribute)categoryAttribute)?.Category ?? Utils.ValueCategory.None; if (attributes != null) { var limit = attributes.FirstOrDefault(x => x is LimitAttribute); diff --git a/Source/Editor/CustomEditors/Editors/FloatEditor.cs b/Source/Editor/CustomEditors/Editors/FloatEditor.cs index 525541e99..c739269ab 100644 --- a/Source/Editor/CustomEditors/Editors/FloatEditor.cs +++ b/Source/Editor/CustomEditors/Editors/FloatEditor.cs @@ -4,7 +4,7 @@ using System; using System.Linq; using FlaxEditor.CustomEditors.Elements; using FlaxEngine; -using Utils = FlaxEditor.Utilities.Utils; +using Utils = FlaxEngine.Utils; namespace FlaxEditor.CustomEditors.Editors { @@ -31,8 +31,8 @@ namespace FlaxEditor.CustomEditors.Editors // Try get limit attribute for value min/max range setting and slider speed var attributes = Values.GetAttributes(); - var categoryAttribute = attributes.FirstOrDefault(x => x is ValueCategoryAttribute); - var valueCategory = ((ValueCategoryAttribute)categoryAttribute)?.Category ?? Utils.ValueCategory.None; + var categoryAttribute = attributes.FirstOrDefault(x => x is NumberCategoryAttribute); + var valueCategory = ((NumberCategoryAttribute)categoryAttribute)?.Category ?? Utils.ValueCategory.None; if (attributes != null) { var range = attributes.FirstOrDefault(x => x is RangeAttribute); diff --git a/Source/Editor/CustomEditors/Editors/Vector3Editor.cs b/Source/Editor/CustomEditors/Editors/Vector3Editor.cs index 9826c339f..fe3ff2b74 100644 --- a/Source/Editor/CustomEditors/Editors/Vector3Editor.cs +++ b/Source/Editor/CustomEditors/Editors/Vector3Editor.cs @@ -4,7 +4,7 @@ using System.Linq; using FlaxEditor.CustomEditors.Elements; using FlaxEngine; using FlaxEngine.GUI; -using Utils = FlaxEditor.Utilities.Utils; +using Utils = FlaxEngine.Utils; namespace FlaxEditor.CustomEditors.Editors { @@ -75,7 +75,7 @@ namespace FlaxEditor.CustomEditors.Editors if (attributes != null) { limit = (LimitAttribute)attributes.FirstOrDefault(x => x is LimitAttribute); - var categoryAttribute = (ValueCategoryAttribute)attributes.FirstOrDefault(x => x is ValueCategoryAttribute); + var categoryAttribute = (NumberCategoryAttribute)attributes.FirstOrDefault(x => x is NumberCategoryAttribute); if (categoryAttribute != null) category = categoryAttribute.Category; } @@ -261,7 +261,7 @@ namespace FlaxEditor.CustomEditors.Editors if (attributes != null) { limit = (LimitAttribute)attributes.FirstOrDefault(x => x is LimitAttribute); - var categoryAttribute = (ValueCategoryAttribute)attributes.FirstOrDefault(x => x is ValueCategoryAttribute); + var categoryAttribute = (NumberCategoryAttribute)attributes.FirstOrDefault(x => x is NumberCategoryAttribute); if (categoryAttribute != null) category = categoryAttribute.Category; } diff --git a/Source/Editor/CustomEditors/Elements/DoubleValueElement.cs b/Source/Editor/CustomEditors/Elements/DoubleValueElement.cs index 460a344ff..4f121204f 100644 --- a/Source/Editor/CustomEditors/Elements/DoubleValueElement.cs +++ b/Source/Editor/CustomEditors/Elements/DoubleValueElement.cs @@ -5,7 +5,7 @@ using System.Reflection; using FlaxEditor.GUI.Input; using FlaxEngine; using FlaxEngine.GUI; -using Utils = FlaxEditor.Utilities.Utils; +using Utils = FlaxEngine.Utils; namespace FlaxEditor.CustomEditors.Elements { diff --git a/Source/Editor/CustomEditors/Elements/FloatValueElement.cs b/Source/Editor/CustomEditors/Elements/FloatValueElement.cs index 413a341c1..9661e391d 100644 --- a/Source/Editor/CustomEditors/Elements/FloatValueElement.cs +++ b/Source/Editor/CustomEditors/Elements/FloatValueElement.cs @@ -5,7 +5,7 @@ using System.Reflection; using FlaxEditor.GUI.Input; using FlaxEngine; using FlaxEngine.GUI; -using Utils = FlaxEditor.Utilities.Utils; +using Utils = FlaxEngine.Utils; namespace FlaxEditor.CustomEditors.Elements { diff --git a/Source/Editor/GUI/Input/DoubleValueBox.cs b/Source/Editor/GUI/Input/DoubleValueBox.cs index 46e6402cb..d7c4950f6 100644 --- a/Source/Editor/GUI/Input/DoubleValueBox.cs +++ b/Source/Editor/GUI/Input/DoubleValueBox.cs @@ -3,7 +3,7 @@ using System; using FlaxEditor.Utilities; using FlaxEngine; -using Utils = FlaxEditor.Utilities.Utils; +using Utils = FlaxEngine.Utils; namespace FlaxEditor.GUI.Input { diff --git a/Source/Editor/GUI/Input/FloatValueBox.cs b/Source/Editor/GUI/Input/FloatValueBox.cs index 64ea000fa..2fccba8e8 100644 --- a/Source/Editor/GUI/Input/FloatValueBox.cs +++ b/Source/Editor/GUI/Input/FloatValueBox.cs @@ -4,7 +4,7 @@ using System; using System.Globalization; using FlaxEditor.Utilities; using FlaxEngine; -using Utils = FlaxEditor.Utilities.Utils; +using Utils = FlaxEngine.Utils; namespace FlaxEditor.GUI.Input { diff --git a/Source/Editor/Utilities/ShuntingYardParser.cs b/Source/Editor/Utilities/ShuntingYardParser.cs index e7c5b5298..f8fa05e5b 100644 --- a/Source/Editor/Utilities/ShuntingYardParser.cs +++ b/Source/Editor/Utilities/ShuntingYardParser.cs @@ -243,6 +243,11 @@ namespace FlaxEditor.Utilities } else if (type == TokenType.Variable) { + if (previous == TokenType.Number) + { + previous = TokenType.Operator; + yield return new Token(TokenType.Operator, "*"); + } // Continue till the end of the variable while (i + 1 < text.Length && DetermineType(text[i + 1]) == TokenType.Variable) { @@ -379,10 +384,7 @@ namespace FlaxEditor.Utilities // we assume the remaining values are all factors to be multiplied if (stack.Count > 1) { - var stackContent = string.Join(",", stack.ToList()); - Debug.Log($"parsing numbers, stack is {stackContent}"); var v1 = stack.Pop(); - Debug.Log($"first on stack: {v1}"); while (stack.Count > 0) v1 *= stack.Pop(); return v1; diff --git a/Source/Editor/Utilities/Utils.cs b/Source/Editor/Utilities/Utils.cs index 0df4fe573..d1db68046 100644 --- a/Source/Editor/Utilities/Utils.cs +++ b/Source/Editor/Utilities/Utils.cs @@ -58,16 +58,6 @@ namespace FlaxEditor.Utilities /// public static readonly string FlaxEngineAssemblyName = "FlaxEngine.CSharp"; - /// - /// A category of number values used for formatting and input boxes - /// - public enum ValueCategory - { - None, - Distance, - Angle - } - /// /// Tries to parse number in the name brackets at the end of the value and then increment it to create a new name. /// Supports numbers at the end without brackets. @@ -1187,11 +1177,11 @@ namespace FlaxEditor.Utilities /// the value to format /// the value type: none means just a number, distance will format in cm/m/km, angle with an appended degree sign /// the formatted string - public static string FormatFloat(float value, ValueCategory category) + public static string FormatFloat(float value, FlaxEngine.Utils.ValueCategory category) { switch (category) { - case ValueCategory.Distance: + case FlaxEngine.Utils.ValueCategory.Distance: var absValue = Mathf.Abs(value); // in case a unit != cm this would be (value / Maters2Units * 100) if (absValue < Units.Meters2Units) @@ -1199,8 +1189,8 @@ namespace FlaxEditor.Utilities if (absValue < Units.Meters2Units * 1000) return (value / Units.Meters2Units).ToString("g7", CultureInfo.InvariantCulture) + "m"; return (value / 1000 / Units.Meters2Units).ToString("g7", CultureInfo.InvariantCulture) + "km"; - case ValueCategory.Angle: return value.ToString("g7", CultureInfo.InvariantCulture) + "°"; - case ValueCategory.None: + case FlaxEngine.Utils.ValueCategory.Angle: return value.ToString("g7", CultureInfo.InvariantCulture) + "°"; + case FlaxEngine.Utils.ValueCategory.None: default: return FormatFloat(value); } @@ -1212,11 +1202,11 @@ namespace FlaxEditor.Utilities /// the value to format /// the value type: none means just a number, distance will format in cm/m/km, angle with an appended degree sign /// the formatted string - public static string FormatFloat(double value, ValueCategory category) + public static string FormatFloat(double value, FlaxEngine.Utils.ValueCategory category) { switch (category) { - case ValueCategory.Distance: + case FlaxEngine.Utils.ValueCategory.Distance: var absValue = Mathf.Abs(value); // in case a unit != cm this would be (value / Maters2Units * 100) if (absValue < Units.Meters2Units) @@ -1224,8 +1214,8 @@ namespace FlaxEditor.Utilities if (absValue < Units.Meters2Units * 1000) return (value / Units.Meters2Units).ToString("g17", CultureInfo.InvariantCulture) + "m"; return (value / 1000 / Units.Meters2Units).ToString("g17", CultureInfo.InvariantCulture) + "km"; - case ValueCategory.Angle: return value.ToString("g17", CultureInfo.InvariantCulture) + "°"; - case ValueCategory.None: + case FlaxEngine.Utils.ValueCategory.Angle: return value.ToString("g17", CultureInfo.InvariantCulture) + "°"; + case FlaxEngine.Utils.ValueCategory.None: default: return FormatFloat(value); } diff --git a/Source/Engine/Scripting/Attributes/Editor/ValueCategoryAttribute.cs b/Source/Engine/Scripting/Attributes/Editor/NumberCategoryAttribute.cs similarity index 64% rename from Source/Engine/Scripting/Attributes/Editor/ValueCategoryAttribute.cs rename to Source/Engine/Scripting/Attributes/Editor/NumberCategoryAttribute.cs index 3c6da2286..6b5726bb1 100644 --- a/Source/Engine/Scripting/Attributes/Editor/ValueCategoryAttribute.cs +++ b/Source/Engine/Scripting/Attributes/Editor/NumberCategoryAttribute.cs @@ -11,23 +11,23 @@ namespace FlaxEngine /// [Serializable] [AttributeUsage(AttributeTargets.Field | AttributeTargets.Property)] - public sealed class ValueCategoryAttribute : Attribute + public sealed class NumberCategoryAttribute : Attribute { /// /// The value category used for formatting. /// - public FlaxEditor.Utilities.Utils.ValueCategory Category; + public Utils.ValueCategory Category; - private ValueCategoryAttribute() + private NumberCategoryAttribute() { - Category = FlaxEditor.Utilities.Utils.ValueCategory.None; + Category = Utils.ValueCategory.None; } /// - /// Initializes a new instance of the class. + /// Initializes a new instance of the class. /// /// The value category. - public ValueCategoryAttribute(FlaxEditor.Utilities.Utils.ValueCategory category) + public NumberCategoryAttribute(Utils.ValueCategory category) { Category = category; } diff --git a/Source/Engine/Utilities/Utils.cs b/Source/Engine/Utilities/Utils.cs index cb385efcf..195bacf96 100644 --- a/Source/Engine/Utilities/Utils.cs +++ b/Source/Engine/Utilities/Utils.cs @@ -1038,5 +1038,15 @@ namespace FlaxEngine parameterTypes = Array.Empty(); return parameterTypes; } + + /// + /// A category of number values used for formatting and input boxes + /// + public enum ValueCategory + { + None, + Distance, + Angle + } } }