2025-06-23 11:42:47 -07:00

66 lines
2.0 KiB
C#

using AssetRipper.Assets.Collections;
using AssetRipper.SourceGenerated.Subclasses.StreamingInfo;
namespace AssetRipper.SourceGenerated.Extensions;
public static class StreamingInfoExtensions
{
public static bool IsSet(this IStreamingInfo streamingInfo) => streamingInfo.Path.Data.Length > 0;
public static bool CheckIntegrity(this IStreamingInfo streamingInfo, AssetCollection file)
{
return StreamedResourceExtensions.CheckIntegrity(streamingInfo.Path, streamingInfo.GetOffset(), streamingInfo.Size, file);
}
public static byte[] GetContent(this IStreamingInfo streamingInfo, AssetCollection file)
{
return StreamedResourceExtensions.GetContent(streamingInfo.Path, streamingInfo.GetOffset(), streamingInfo.Size, file) ?? [];
}
public static ulong GetOffset(this IStreamingInfo streamingInfo)
{
return streamingInfo.Has_Offset_UInt64() ? streamingInfo.Offset_UInt64 : streamingInfo.Offset_UInt32;
}
public static void SetOffset(this IStreamingInfo streamingInfo, ulong value)
{
if (streamingInfo.Has_Offset_UInt64())
{
streamingInfo.Offset_UInt64 = value;
}
else
{
streamingInfo.Offset_UInt32 = (uint)value;
}
}
public static void CopyValues(this IStreamingInfo destination, IStreamingInfo source)
{
destination.SetOffset(source.GetOffset());
destination.Size = source.Size;
destination.Path = source.Path;
}
public static void ClearValues(this IStreamingInfo streamingInfo)
{
streamingInfo.Offset_UInt32 = default;
streamingInfo.Offset_UInt64 = default;
streamingInfo.Path = Utf8String.Empty;
streamingInfo.Size = default;
}
public static void GetValues(this IStreamingInfo streamingInfo, out Utf8String path, out ulong offset, out uint size)
{
path = streamingInfo.Path;
offset = streamingInfo.GetOffset();
size = streamingInfo.Size;
}
public static void SetValues(this IStreamingInfo streamingInfo, Utf8String path, ulong offset, uint size)
{
streamingInfo.Path = path;
streamingInfo.SetOffset(offset);
streamingInfo.Size = size;
}
}