From 2bc1cfc5d08f2ade5c5a13119051064f0a49fd2e Mon Sep 17 00:00:00 2001 From: Matt Nadareski Date: Wed, 27 Nov 2024 21:03:50 -0500 Subject: [PATCH] Cleanup from issues in Serialization --- SabreTools.Models/BDPlus/SVM.cs | 21 ++++++++++--------- SabreTools.Models/BSP/ColorRGBExp32.cs | 2 +- SabreTools.Models/BSP/CompressedLightCube.cs | 2 +- SabreTools.Models/BSP/QAngle.cs | 2 +- SabreTools.Models/BSP/Vector3D.cs | 2 +- .../NonResidentNamesTableEntry.cs | 7 +++++-- 6 files changed, 20 insertions(+), 16 deletions(-) diff --git a/SabreTools.Models/BDPlus/SVM.cs b/SabreTools.Models/BDPlus/SVM.cs index c38d1e6..284f036 100644 --- a/SabreTools.Models/BDPlus/SVM.cs +++ b/SabreTools.Models/BDPlus/SVM.cs @@ -1,3 +1,5 @@ +using System.Runtime.InteropServices; + namespace SabreTools.Models.BDPlus { /// @@ -6,40 +8,39 @@ namespace SabreTools.Models.BDPlus /// /// "BDSVM_CC" /// - /// 8 bytes - public string? Signature { get; set; } + [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 8)] + public string? Signature; /// /// Unknown data /// - /// 5 bytes - public byte[]? Unknown1 { get; set; } + [MarshalAs(UnmanagedType.ByValArray, SizeConst = 5)] + public byte[]? Unknown1 = new byte[5]; /// /// Version year /// - public ushort Year { get; set; } + public ushort Year; /// /// Version month /// - public byte Month { get; set; } + public byte Month; /// /// Version day /// - public byte Day { get; set; } + public byte Day; /// /// Unknown data /// - /// 4 bytes - public byte[]? Unknown2 { get; set; } + public uint Unknown2; /// /// Length /// - public uint Length { get; set; } + public uint Length; /// /// Length bytes of data diff --git a/SabreTools.Models/BSP/ColorRGBExp32.cs b/SabreTools.Models/BSP/ColorRGBExp32.cs index a991ea0..52e8b8d 100644 --- a/SabreTools.Models/BSP/ColorRGBExp32.cs +++ b/SabreTools.Models/BSP/ColorRGBExp32.cs @@ -7,7 +7,7 @@ namespace SabreTools.Models.BSP /// /// [StructLayout(LayoutKind.Sequential)] - public struct ColorRGBExp32 + public class ColorRGBExp32 { public byte Red; diff --git a/SabreTools.Models/BSP/CompressedLightCube.cs b/SabreTools.Models/BSP/CompressedLightCube.cs index b0ab729..1fafd35 100644 --- a/SabreTools.Models/BSP/CompressedLightCube.cs +++ b/SabreTools.Models/BSP/CompressedLightCube.cs @@ -8,7 +8,7 @@ namespace SabreTools.Models.BSP /// /// [StructLayout(LayoutKind.Sequential)] - public struct CompressedLightCube + public class CompressedLightCube { [MarshalAs(UnmanagedType.ByValArray, SizeConst = 6)] public ColorRGBExp32[]? Colors; diff --git a/SabreTools.Models/BSP/QAngle.cs b/SabreTools.Models/BSP/QAngle.cs index b9f1b0b..985005a 100644 --- a/SabreTools.Models/BSP/QAngle.cs +++ b/SabreTools.Models/BSP/QAngle.cs @@ -8,7 +8,7 @@ namespace SabreTools.Models.BSP /// from the cardinal Z axis. /// [StructLayout(LayoutKind.Sequential)] - public struct QAngle + public class QAngle { public float X { get; set; } public float Y { get; set; } diff --git a/SabreTools.Models/BSP/Vector3D.cs b/SabreTools.Models/BSP/Vector3D.cs index 49cac66..2d5e34e 100644 --- a/SabreTools.Models/BSP/Vector3D.cs +++ b/SabreTools.Models/BSP/Vector3D.cs @@ -8,7 +8,7 @@ namespace SabreTools.Models.BSP /// spec and the code of the hlbsp project. /// [StructLayout(LayoutKind.Sequential)] - public struct Vector3D + public class Vector3D { public float X { get; set; } public float Y { get; set; } diff --git a/SabreTools.Models/LinearExecutable/NonResidentNamesTableEntry.cs b/SabreTools.Models/LinearExecutable/NonResidentNamesTableEntry.cs index f618635..aaeca40 100644 --- a/SabreTools.Models/LinearExecutable/NonResidentNamesTableEntry.cs +++ b/SabreTools.Models/LinearExecutable/NonResidentNamesTableEntry.cs @@ -1,4 +1,6 @@ -namespace SabreTools.Models.LinearExecutable +using System.Runtime.InteropServices; + +namespace SabreTools.Models.LinearExecutable { /// /// The resident and non-resident name tables define the ASCII names and ordinal @@ -25,6 +27,7 @@ /// /// /// + [StructLayout(LayoutKind.Sequential)] public sealed class NonResidentNamesTableEntry { /// @@ -39,7 +42,7 @@ /// signifies that additional information is contained in the linear EXE module and /// will be used in the future for parameter type checking. /// - public byte Length { get; set; } // TODO: Remove in lieu of AnsiBStr + public byte Length { get; set; } /// /// ASCII String.