diff --git a/Src/NationsConverterWeb/NationsConverterWeb/Components/Pages/DashboardBlock.razor b/Src/NationsConverterWeb/NationsConverterWeb/Components/Pages/DashboardBlock.razor index fc003255..519f06ae 100644 --- a/Src/NationsConverterWeb/NationsConverterWeb/Components/Pages/DashboardBlock.razor +++ b/Src/NationsConverterWeb/NationsConverterWeb/Components/Pages/DashboardBlock.razor @@ -230,6 +230,59 @@ } } + + @if (macroblocks.Count == 0) + { + + } + else + { + foreach (var (blockItem, macroblockGbx) in macroblocks) + { +

@blockItem.FileName

+ +

+                    Items:
+ @foreach (var obj in macroblockGbx.ObjectSpawns ?? []) + { + var pos = new GBX.NET.Vec3( + MathF.Round(obj.AbsolutePositionInMap.X, 4), + MathF.Round(obj.AbsolutePositionInMap.Y, 4), + MathF.Round(obj.AbsolutePositionInMap.Z, 4)); + var rot = new GBX.NET.Vec3( + MathF.Round(obj.PitchYawRoll.X / MathF.PI * 180, 4), + MathF.Round(obj.PitchYawRoll.Y / MathF.PI * 180, 4), + MathF.Round(obj.PitchYawRoll.Z / MathF.PI * 180, 4)); + + - Name: @obj.ItemModel?.Id
+ @if (pos.X != 0) + { + OffsetX: @pos.X.ToString(System.Globalization.CultureInfo.InvariantCulture)
+ } + @if (pos.Y != 0) + { + OffsetY: @pos.Y.ToString(System.Globalization.CultureInfo.InvariantCulture)
+ } + @if (pos.Z != 0) + { + OffsetZ: @pos.Z.ToString(System.Globalization.CultureInfo.InvariantCulture)
+ } + @if (rot.X != 0) + { + RotX: @(rot.X.ToString(System.Globalization.CultureInfo.InvariantCulture))
+ } + @if (rot.Y != 0) + { + RotY: @(rot.Y.ToString(System.Globalization.CultureInfo.InvariantCulture))
+ } + @if (rot.Z != 0) + { + RotZ: @(rot.Z.ToString(System.Globalization.CultureInfo.InvariantCulture))
+ } + } +
+ } + } } @@ -246,6 +299,7 @@ private string? blockDirBasePath; private List> items = new(); + private Dictionary macroblocks = new(); private async Task GetBlockAsync() { @@ -549,6 +603,21 @@ .ToList(); } + private async Task LoadMacroblockInfo() + { + var mblocks = await Db.MacroblockUploads + .Include(x => x.BlockItem) + .Where(x => x.BlockItem.BlockId == block!.Id) + .GroupBy(x => x.BlockItem) + .Select(x => x.OrderByDescending(x => x.UploadedAt).First()) + .ToListAsync(); + + macroblocks = mblocks + .ToDictionary( + x => x.BlockItem, + x => GBX.NET.Gbx.ParseNode(new MemoryStream(x.Data))); + } + private float GetUploadValue(ItemUpload upload, int totalValue) { return (upload.Value == 0 ? 1 : upload.Value) / (float)totalValue * upload.BlockItem.Value;