| 1016 | } |
| 1017 | |
| 1018 | private static string InternalFormat(double value, string format, FlaxEngine.Utils.ValueCategory category) |
| 1019 | { |
| 1020 | switch (category) |
| 1021 | { |
| 1022 | case FlaxEngine.Utils.ValueCategory.Distance: |
| 1023 | if (!Units.AutomaticUnitsFormatting) |
| 1024 | return (value / Units.Meters2Units).ToString(format, CultureInfo.InvariantCulture) + Units.Unit("m"); |
| 1025 | var absValue = Mathf.Abs(value); |
| 1026 | // in case a unit != cm this would be (value / Meters2Units * 100) |
| 1027 | if (absValue < Units.Meters2Units) |
| 1028 | return value.ToString(format, CultureInfo.InvariantCulture) + Units.Unit("cm"); |
| 1029 | if (absValue < Units.Meters2Units * 1000) |
| 1030 | return (value / Units.Meters2Units).ToString(format, CultureInfo.InvariantCulture) + Units.Unit("m"); |
| 1031 | return (value / 1000 / Units.Meters2Units).ToString(format, CultureInfo.InvariantCulture) + Units.Unit("km"); |
| 1032 | case FlaxEngine.Utils.ValueCategory.Angle: return value.ToString(format, CultureInfo.InvariantCulture) + "°"; |
| 1033 | case FlaxEngine.Utils.ValueCategory.Time: return value.ToString(format, CultureInfo.InvariantCulture) + Units.Unit("s"); |
| 1034 | // some fonts have a symbol for that: "\u33A7" |
| 1035 | case FlaxEngine.Utils.ValueCategory.Speed: return (value / Units.Meters2Units).ToString(format, CultureInfo.InvariantCulture) + Units.Unit("m/s"); |
| 1036 | case FlaxEngine.Utils.ValueCategory.Acceleration: return (value / Units.Meters2Units).ToString(format, CultureInfo.InvariantCulture) + Units.Unit("m/s²"); |
| 1037 | case FlaxEngine.Utils.ValueCategory.Area: return (value / Units.Meters2Units / Units.Meters2Units).ToString(format, CultureInfo.InvariantCulture) + Units.Unit("m²"); |
| 1038 | case FlaxEngine.Utils.ValueCategory.Volume: return (value / Units.Meters2Units / Units.Meters2Units / Units.Meters2Units).ToString(format, CultureInfo.InvariantCulture) + Units.Unit("m³"); |
| 1039 | case FlaxEngine.Utils.ValueCategory.Mass: return value.ToString(format, CultureInfo.InvariantCulture) + Units.Unit("kg"); |
| 1040 | case FlaxEngine.Utils.ValueCategory.Force: return (value / Units.Meters2Units).ToString(format, CultureInfo.InvariantCulture) + Units.Unit("N"); |
| 1041 | case FlaxEngine.Utils.ValueCategory.Torque: return (value / Units.Meters2Units / Units.Meters2Units).ToString(format, CultureInfo.InvariantCulture) + Units.Unit("Nm"); |
| 1042 | case FlaxEngine.Utils.ValueCategory.None: |
| 1043 | default: return FormatFloat(value); |
| 1044 | } |
| 1045 | } |
| 1046 | |
| 1047 | /// <summary> |
| 1048 | /// Format a float value either as-is, with a distance unit or with a degree sign. |