A little bit better number formatting

This commit is contained in:
Simon Lübeß
2024-06-27 20:50:26 +02:00
parent b96f195afb
commit c908f5a0e7
3 changed files with 36 additions and 5 deletions
@@ -353,7 +353,7 @@ namespace GlitchyEditor.EditWindows
}
ImGui.PropertyTableStartNewProperty("Rotation");
if (ImGui.Float3Editor("##Rotation", ref rotationEuler, resetValues: .Zero, dragSpeed: 0.1f, componentEnabled: componentEditable, format: .("%.3g°",)))
if (ImGui.Float3Editor("##Rotation", ref rotationEuler, resetValues: .Zero, dragSpeed: 0.1f, componentEnabled: componentEditable, format: .("0.#####°",)))
{
transform.EditorRotationEuler = MathHelper.ToRadians(rotationEuler);
+14 -4
View File
@@ -324,22 +324,32 @@ namespace ImGui
SameLine();
char8* format = "%.3g";
StringView format = "0.#####";
if (!numberFormat[i].IsWhiteSpace)
{
// Look if we have a format for the specific index
format = numberFormat[i].ToScopeCStr!:componentLoop();
format = numberFormat[i];
}
else if (!numberFormat[0].IsWhiteSpace)
{
// Try to take the first number format
format = numberFormat[0].ToScopeCStr!:componentLoop();
format = numberFormat[0];
}
if (!format.StartsWith("%"))
{
String str = scope:componentLoop .();
value[i].ToString(str, scope .(format), null);
format = str;
}
PushItemWidth(dragFloatWidth);
if (DragFloat(componentIds[i], &value[i], dragSpeed, minValue[i], maxValue[i], format))
if (DragFloat(componentIds[i], &value[i], dragSpeed, minValue[i], maxValue[i],
format.ToScopeCStr!:componentLoop(), flags: .NoRoundToFormat))
{
changed = true;
}
+21
View File
@@ -276,6 +276,27 @@ internal class EntityEditor
var value = (T)reference!;
if (format == null && value is float || value is double || value is Half)
{
format = "0.#####";
}
if (!format.StartsWith("%"))
{
if (value is float f)
{
format = f.ToString(format);
}
else if (value is double d)
{
format = d.ToString(format);
}
else if (value is Half h)
{
format = h.ToString(format);
}
}
if (range?.Slider == true)
{
if (ImGui.SliderScalar(fieldId, dataType, (IntPtr)(&value), (IntPtr)(&min), (IntPtr)(&max), format))