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
+ }
}
}