|
4 | 4 | using System.Text; |
5 | 5 | using System.Numerics; |
6 | 6 | using System.IO; |
| 7 | +using System.Runtime.CompilerServices; |
| 8 | +using System.Globalization; |
7 | 9 |
|
8 | 10 | namespace Datamodel.Codecs |
9 | 11 | { |
@@ -254,55 +256,59 @@ void WriteAttribute(string name, Type type, object value, bool in_array) |
254 | 256 | if (type == typeof(bool)) |
255 | 257 | value = (bool)value ? 1 : 0; |
256 | 258 | else if (type == typeof(float)) |
257 | | - value = (float)value; |
| 259 | + value = FormattableString.Invariant($"{(float)value}"); |
258 | 260 | else if (type == typeof(byte[])) |
259 | | - value = BitConverter.ToString((byte[])value).Replace("-", string.Empty); |
| 261 | + value = BitConverter.ToString((byte[])value).Replace("-", string.Empty, false, CultureInfo.InvariantCulture); |
260 | 262 | else if (type == typeof(TimeSpan)) |
261 | | - value = ((TimeSpan)value).TotalSeconds; |
| 263 | + value = ((TimeSpan)value).TotalSeconds.ToString(CultureInfo.InvariantCulture); |
262 | 264 | else if (type == typeof(Color)) |
263 | 265 | { |
264 | | - var c = (Color)value; |
265 | | - value = string.Join(" ", new int[] { c.R, c.G, c.B, c.A }); |
| 266 | + var castValue = (Color)value; |
| 267 | + value = FormattableString.Invariant($"{castValue.R} {castValue.G} {castValue.B} {castValue.A}"); |
266 | 268 | } |
267 | 269 | else if (value is ulong ulong_value) |
268 | | - value = $"0x{ulong_value:X}"; |
| 270 | + value = $"0x{ulong_value.ToString(CultureInfo.InvariantCulture):X}"; |
269 | 271 | else if (type == typeof(Vector2)) |
270 | 272 | { |
271 | | - var arr = new float[2]; |
272 | | - ((Vector2)value).CopyTo(arr); |
273 | | - value = string.Join(" ", arr); |
| 273 | + var castValue = (Vector2)value; |
| 274 | + value = FormattableString.Invariant($"{castValue.X} {castValue.Y}"); |
274 | 275 | } |
275 | 276 | else if (type == typeof(Vector3)) |
276 | 277 | { |
277 | | - var arr = new float[3]; |
278 | | - ((Vector3)value).CopyTo(arr); |
279 | | - value = string.Join(" ", arr); |
| 278 | + var castValue = (Vector3)value; |
| 279 | + value = FormattableString.Invariant($"{castValue.X} {castValue.Y} {castValue.Z}"); |
280 | 280 | } |
281 | 281 | else if (type == typeof(Vector4)) |
282 | 282 | { |
283 | | - var arr = new float[4]; |
284 | | - ((Vector4)value).CopyTo(arr); |
285 | | - value = string.Join(" ", arr); |
| 283 | + var castValue = (Vector4)value; |
| 284 | + value = FormattableString.Invariant($"{castValue.X} {castValue.Y} {castValue.Z} {castValue.W}"); |
286 | 285 | } |
287 | 286 | else if (type == typeof(Quaternion)) |
288 | 287 | { |
289 | | - var q = (Quaternion)value; |
290 | | - value = FormattableString.Invariant($"{q.X} {q.Y} {q.Z} {q.W}"); |
| 288 | + var castValue = (Quaternion)value; |
| 289 | + value = FormattableString.Invariant($"{castValue.X} {castValue.Y} {castValue.Z} {castValue.W}"); |
291 | 290 | } |
292 | 291 | else if (type == typeof(Matrix4x4)) |
293 | 292 | { |
294 | | - var m = (Matrix4x4)value; |
295 | | - value = string.Join(" ", m.M11, m.M12, m.M13, m.M14, m.M21, m.M22, m.M23, m.M24, m.M31, m.M32, m.M33, m.M34, m.M41, m.M42, m.M43, m.M44); |
| 293 | + var castValue = (Matrix4x4)value; |
| 294 | + var matrixString = |
| 295 | + $"{castValue.M11} {castValue.M12} {castValue.M13} {castValue.M14}" + |
| 296 | + $" {castValue.M21} {castValue.M22} {castValue.M23} {castValue.M24}" + |
| 297 | + $" {castValue.M31} {castValue.M32} {castValue.M33} {castValue.M34}" + |
| 298 | + $" {castValue.M41} {castValue.M42} {castValue.M43} {castValue.M44}"; |
| 299 | + |
| 300 | + value = FormattableString.Invariant(FormattableStringFactory.Create(matrixString)); |
296 | 301 | } |
297 | 302 | else if (value is QAngle qangle_value) |
298 | 303 | { |
299 | | - value = string.Join(" ", (int)qangle_value.Pitch, (int)qangle_value.Yaw, (int)qangle_value.Roll); |
| 304 | + var castValue = (QAngle)value; |
| 305 | + value = FormattableString.Invariant($"{castValue.Pitch} {castValue.Yaw} {castValue.Roll}"); |
300 | 306 | } |
301 | 307 |
|
302 | 308 | if (in_array) |
303 | | - Writer.Write(String.Format(" \"{0}\",", value.ToString())); |
| 309 | + Writer.Write(FormattableString.Invariant($" \"{value}\",")); |
304 | 310 | else |
305 | | - Writer.WriteTokenLine(name, TypeNames[type], value.ToString()); |
| 311 | + Writer.WriteTokenLine(name, TypeNames[type], FormattableString.Invariant($"{value}")); |
306 | 312 | } |
307 | 313 |
|
308 | 314 | } |
|
0 commit comments