From 78f19ae1d360f8691a557694431d28a276e9867e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A9o=20Lam?= Date: Sat, 19 Sep 2020 23:56:31 +0200 Subject: [PATCH] tools/generate_bgparamlist_struct: Represent floats with reasonable precision There's no point in printing 0.0010000000014 (example) instead of 0.001 --- tools/generate_bgparamlist_struct.py | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/tools/generate_bgparamlist_struct.py b/tools/generate_bgparamlist_struct.py index 5ef79c70..09d8d313 100755 --- a/tools/generate_bgparamlist_struct.py +++ b/tools/generate_bgparamlist_struct.py @@ -42,6 +42,13 @@ def _aamp_type_to_agl_utl_parameter_type(type_: oead.aamp.Parameter.Type) -> str return _AampTypeToAglUtlParameterType[type_] +def _represent_float(value: float) -> str: + s = f'{value:g}' + if 'e' not in s and '.' not in s: + s += '.0' + return s + + def _get_value_repr(value) -> str: v = value.v @@ -52,13 +59,16 @@ def _get_value_repr(value) -> str: return json.dumps(str(v)) if isinstance(v, oead.Vector2f): - return f"{{{v.x}, {v.y}}}" + return f"{{{_represent_float(v.x)}, {_represent_float(v.y)}}}" if isinstance(v, oead.Vector3f): - return f"{{{v.x}, {v.y}, {v.z}}}" + return f"{{{_represent_float(v.x)}, {_represent_float(v.y)}, {_represent_float(v.z)}}}" if isinstance(v, oead.Vector4f): - return f"{{{v.x}, {v.y}, {v.z}, {v.t}}}" + return f"{{{_represent_float(v.x)}, {_represent_float(v.y)}, {_represent_float(v.z)}, {_represent_float(v.t)}}}" + + if isinstance(v, float): + return _represent_float(v) return repr(v)