|
@@ -16,6 +16,12 @@ namespace SharpGLTF.Memory
|
|
|
{
|
|
{
|
|
|
public static List<byte> GetBytesForArray<T>(List<List<T>> values)
|
|
public static List<byte> GetBytesForArray<T>(List<List<T>> values)
|
|
|
{
|
|
{
|
|
|
|
|
+ var type = typeof(T);
|
|
|
|
|
+ if(type == typeof(bool))
|
|
|
|
|
+ {
|
|
|
|
|
+ var booleanBytes = GetBytesBooleans(values.Cast<List<bool>>().ToList());
|
|
|
|
|
+ return booleanBytes;
|
|
|
|
|
+ }
|
|
|
var bytes = new List<byte>();
|
|
var bytes = new List<byte>();
|
|
|
foreach (var value in values)
|
|
foreach (var value in values)
|
|
|
{
|
|
{
|
|
@@ -26,7 +32,6 @@ namespace SharpGLTF.Memory
|
|
|
return bytes;
|
|
return bytes;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
-
|
|
|
|
|
/// <summary>
|
|
/// <summary>
|
|
|
/// Converts a list of primitive types into a byte array
|
|
/// Converts a list of primitive types into a byte array
|
|
|
/// </summary>
|
|
/// </summary>
|
|
@@ -81,6 +86,14 @@ namespace SharpGLTF.Memory
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ private static List<byte> GetBytesBooleans(List<List<bool>> values)
|
|
|
|
|
+ {
|
|
|
|
|
+ var bits = new BitArray(values.SelectMany(x => x).ToArray());
|
|
|
|
|
+ var boolBytes = new byte[(bits.Length - 1) / 8 + 1];
|
|
|
|
|
+ bits.CopyTo(boolBytes, 0);
|
|
|
|
|
+ return boolBytes.ToList();
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
private static byte[] Matrix4x4ToBytes<T>(IReadOnlyList<T> values)
|
|
private static byte[] Matrix4x4ToBytes<T>(IReadOnlyList<T> values)
|
|
|
{
|
|
{
|
|
|
var result = new byte[values.Count * 64];
|
|
var result = new byte[values.Count * 64];
|