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.