tools/generate_bgparamlist_struct: Represent floats with reasonable precision

There's no point in printing 0.0010000000014 (example) instead of 0.001
This commit is contained in:
Léo Lam 2020-09-19 23:56:31 +02:00
parent 9c32a09afb
commit 78f19ae1d3
No known key found for this signature in database
GPG Key ID: 0DF30F9081000741
1 changed files with 13 additions and 3 deletions

View File

@ -42,6 +42,13 @@ def _aamp_type_to_agl_utl_parameter_type(type_: oead.aamp.Parameter.Type) -> str
return _AampTypeToAglUtlParameterType[type_] 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: def _get_value_repr(value) -> str:
v = value.v v = value.v
@ -52,13 +59,16 @@ def _get_value_repr(value) -> str:
return json.dumps(str(v)) return json.dumps(str(v))
if isinstance(v, oead.Vector2f): 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): 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): 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) return repr(v)