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"); 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); transform.EditorRotationEuler = MathHelper.ToRadians(rotationEuler);
+14 -4
View File
@@ -324,22 +324,32 @@ namespace ImGui
SameLine(); SameLine();
char8* format = "%.3g"; StringView format = "0.#####";
if (!numberFormat[i].IsWhiteSpace) if (!numberFormat[i].IsWhiteSpace)
{ {
// Look if we have a format for the specific index // Look if we have a format for the specific index
format = numberFormat[i].ToScopeCStr!:componentLoop(); format = numberFormat[i];
} }
else if (!numberFormat[0].IsWhiteSpace) else if (!numberFormat[0].IsWhiteSpace)
{ {
// Try to take the first number format // 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); 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; changed = true;
} }
+21
View File
@@ -276,6 +276,27 @@ internal class EntityEditor
var value = (T)reference!; 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 (range?.Slider == true)
{ {
if (ImGui.SliderScalar(fieldId, dataType, (IntPtr)(&value), (IntPtr)(&min), (IntPtr)(&max), format)) if (ImGui.SliderScalar(fieldId, dataType, (IntPtr)(&value), (IntPtr)(&min), (IntPtr)(&max), format))