this repo has no description

work on entities

Changed files
+622 -45
Kestrel.Framework
Kestrel.Game.Client
assets
+1 -1
Kestrel.Framework/Client/ClientState.cs
··· 18 18 public Kestrel.Framework.Client.Graphics.Window Window; 19 19 public Camera Camera; 20 20 public ClientPlayer Player; 21 - public ConcurrentDictionary<String, ClientPlayer> Players = []; 21 + public ConcurrentDictionary<string, ClientPlayer> Players = []; 22 22 public NetPeer NetServer; 23 23 public World World; 24 24 public ConcurrentDictionary<Vector3I, ChunkMesh> ChunkMeshes = [];
+1 -1
Kestrel.Framework/Client/Graphics/Shaders/ShaderProgram.cs
··· 54 54 gl.UseProgram(GlProgram); 55 55 } 56 56 57 - public int GetUniformLocation(String uniform) 57 + public int GetUniformLocation(string uniform) 58 58 { 59 59 return gl.GetUniformLocation(GlProgram, uniform); 60 60 }
+1 -1
Kestrel.Framework/Client/Player/ClientPlayer.cs
··· 7 7 8 8 public class ClientPlayer 9 9 { 10 - public String Name { get; set; } 10 + public string Name { get; set; } 11 11 public Vector3 Location { get; set; } 12 12 public Vector3I LastFrameChunkPos { get; set; } 13 13 }
+28
Kestrel.Framework/Entity/ComponentRegistry.cs
··· 1 + using System.Reflection; 2 + 3 + namespace Kestrel.Framework.Entity; 4 + 5 + public class ComponentRegistry 6 + { 7 + INetworkableComponent[] components; 8 + string targetNamespace = "Kestrel.Framework.Entity.Components"; 9 + 10 + public ComponentRegistry() 11 + { 12 + Assembly.GetExecutingAssembly() 13 + .GetTypes() 14 + .Where(t => 15 + t.IsValueType && 16 + t.IsAssignableTo(typeof(INetworkableComponent)) && 17 + t.Namespace == targetNamespace && 18 + t.IsDefined(typeof(System.Runtime.CompilerServices.IsReadOnlyAttribute), false) // heuristic for record struct 19 + ) 20 + .ToList(); 21 + } 22 + 23 + public void asd() 24 + { 25 + 26 + var components = 27 + } 28 + }
+18
Kestrel.Framework/Entity/Components/DisplayName.cs
··· 1 + using LiteNetLib.Utils; 2 + 3 + namespace Kestrel.Framework.Entity.Components; 4 + 5 + public record struct DisplayName(string Name) : INetworkableComponent 6 + { 7 + public readonly int PacketId => 3; 8 + 9 + public void Deserialize(NetDataReader reader) 10 + { 11 + Name = reader.GetString(64); 12 + } 13 + 14 + public void Serialize(NetDataWriter writer) 15 + { 16 + writer.Put(Name, 64); 17 + } 18 + }
+26
Kestrel.Framework/Entity/Components/Location.cs
··· 1 + using LiteNetLib.Utils; 2 + 3 + namespace Kestrel.Framework.Entity.Components; 4 + 5 + public record struct Location(float X, float Y, float Z) : INetworkableComponent 6 + { 7 + public readonly int PacketId => 1; 8 + 9 + public float LastUpdatedX = X; 10 + public float LastUpdatedY = Y; 11 + public float LastUpdatedZ = Z; 12 + 13 + public void Serialize(NetDataWriter writer) 14 + { 15 + writer.Put(X); 16 + writer.Put(Y); 17 + writer.Put(Z); 18 + } 19 + 20 + public void Deserialize(NetDataReader reader) 21 + { 22 + X = reader.GetInt(); 23 + Y = reader.GetInt(); 24 + Z = reader.GetInt(); 25 + } 26 + };
+3
Kestrel.Framework/Entity/Components/ModelRenderer.cs
··· 1 + namespace Kestrel.Framework.Entity.Components; 2 + 3 + public record struct ModelRenderer(string Model);
+18
Kestrel.Framework/Entity/Components/Player.cs
··· 1 + using LiteNetLib.Utils; 2 + 3 + namespace Kestrel.Framework.Entity.Components; 4 + 5 + public record struct Player(string Name) : INetworkableComponent 6 + { 7 + public readonly int PacketId => 4; 8 + 9 + public void Deserialize(NetDataReader reader) 10 + { 11 + Name = reader.GetString(64); 12 + } 13 + 14 + public void Serialize(NetDataWriter writer) 15 + { 16 + writer.Put(Name, 64); 17 + } 18 + }
+22
Kestrel.Framework/Entity/Components/Velocity.cs
··· 1 + namespace Kestrel.Framework.Entity.Components; 2 + 3 + using LiteNetLib.Utils; 4 + 5 + public record struct Velocity(float X, float Y, float Z) : INetworkableComponent 6 + { 7 + public readonly int PacketId => 2; 8 + 9 + public void Deserialize(NetDataReader reader) 10 + { 11 + X = reader.GetFloat(); 12 + Y = reader.GetFloat(); 13 + Z = reader.GetFloat(); 14 + } 15 + 16 + public void Serialize(NetDataWriter writer) 17 + { 18 + writer.Put(X); 19 + writer.Put(Y); 20 + writer.Put(Z); 21 + } 22 + }
+11
Kestrel.Framework/Entity/INetworkableComponent.cs
··· 1 + namespace Kestrel.Framework.Entity; 2 + 3 + using LiteNetLib.Utils; 4 + 5 + public interface INetworkableComponent 6 + { 7 + int PacketId { get; } 8 + 9 + void Serialize(NetDataWriter writer); 10 + void Deserialize(NetDataReader reader); 11 + }
+1
Kestrel.Framework/Kestrel.Framework.csproj
··· 8 8 </PropertyGroup> 9 9 10 10 <ItemGroup> 11 + <PackageReference Include="Arch" Version="2.1.0-beta" /> 11 12 <PackageReference Include="GlmSharp" Version="0.9.8" /> 12 13 <PackageReference Include="LiteNetLib" Version="1.3.1" /> 13 14 <PackageReference Include="Silk.NET" Version="2.22.0" />
+2 -2
Kestrel.Framework/Networking/Packets/C2S/C2SPlayerLoginRequest.cs
··· 9 9 10 10 namespace Kestrel.Framework.Networking.Packets.C2S; 11 11 12 - public struct C2SPlayerLoginRequest(String playerName) : IC2SPacket 12 + public struct C2SPlayerLoginRequest(string playerName) : IC2SPacket 13 13 { 14 - public String PlayerName = playerName; 14 + public string PlayerName = playerName; 15 15 16 16 public readonly ushort PacketId => 1; 17 17
+1 -1
Kestrel.Framework/Networking/Packets/S2C/S2CBroadcastPlayerJoin.cs
··· 9 9 public class S2CBroadcastPlayerJoin : IS2CPacket 10 10 { 11 11 public ushort PacketId => 5; 12 - public String PlayerName; 12 + public string PlayerName; 13 13 public Vector3 Position; 14 14 15 15 public void Deserialize(NetDataReader reader)
+1 -1
Kestrel.Framework/Networking/Packets/S2C/S2CBroadcastPlayerMove.cs
··· 9 9 public class S2CBroadcastPlayerMove : IS2CPacket 10 10 { 11 11 public ushort PacketId => 4; 12 - public String PlayerName; 12 + public string PlayerName; 13 13 public Vector3 Position; 14 14 15 15 public void Deserialize(NetDataReader reader)
+8 -22
Kestrel.Framework/Networking/Packets/S2C/S2CPlayerLoginSuccess.cs
··· 1 1 using System.Numerics; 2 2 using GlmSharp; 3 + using Kestrel.Framework.Entity; 3 4 using Kestrel.Framework.Networking.Packets.C2S; 4 5 using Kestrel.Framework.Server.Player; 5 6 using Kestrel.Framework.Utils; ··· 12 13 public class S2CPlayerLoginSuccess : IS2CPacket 13 14 { 14 15 public ushort PacketId => 2; 15 - public Vector3 Position; 16 - public int PlayerCount; 17 - public List<ClientPlayer> Players; 16 + public int EntityCount; 17 + public Dictionary<int, INetworkableComponent[]> Entities; 18 18 19 19 public void Deserialize(NetDataReader reader) 20 20 { 21 - Position.X = reader.GetFloat(); 22 - Position.Y = reader.GetFloat(); 23 - Position.Z = reader.GetFloat(); 24 - PlayerCount = reader.GetInt(); 25 - Players = []; 26 - for (int i = 0; i < PlayerCount; i++) 21 + EntityCount = reader.GetInt(); 22 + Entities = []; 23 + for (int i = 0; i < EntityCount; i++) 27 24 { 28 - string playerName = reader.GetString(64); 29 - Vector3 location = new() 30 - { 31 - X = reader.GetFloat(), 32 - Y = reader.GetFloat(), 33 - Z = reader.GetFloat() 34 - }; 35 - 36 - Players.Add(new ClientPlayer 37 - { 38 - Name = playerName, 39 - Location = location 40 - }); 25 + var componentCount = reader.GetInt(); 26 + var components = new INetworkableComponent[componentCount]; 41 27 } 42 28 } 43 29
+1 -1
Kestrel.Framework/Server/Player/ServerPlayer.cs
··· 6 6 7 7 public class ServerPlayer 8 8 { 9 - public String Name { get; set; } 9 + public string Name { get; set; } 10 10 public vec3 Location { get; set; } 11 11 public NetPeer NetClient { get; set; } 12 12 }
+16 -1
Kestrel.Framework/Server/Server.cs
··· 1 1 using System.Collections.Concurrent; 2 + using Arch.Core; 3 + using Kestrel.Framework.Entity.Components; 2 4 using Kestrel.Framework.Networking; 3 5 using Kestrel.Framework.Networking.Packets; 4 6 using Kestrel.Framework.Networking.Packets.C2S; 7 + using Kestrel.Framework.Utils; 5 8 using LiteNetLib; 6 9 using LiteNetLib.Utils; 10 + using ArchWorld = Arch.Core.World; 11 + using ArchEntity = Arch.Core.Entity; 7 12 8 13 namespace Kestrel.Framework.Server; 9 14 ··· 18 23 ServerState.NetServer.Start(9050 /* port */); 19 24 20 25 ServerState.World = new(); 26 + ServerState.Entities = ArchWorld.Create(); 27 + 28 + ServerState.Entities.Create(new Location(-416, 80, 383), new ModelRenderer("")); 21 29 22 30 PacketRegistry.RegisterPackets(); 23 31 ··· 53 61 while (!Console.KeyAvailable) 54 62 { 55 63 ServerState.NetServer.PollEvents(); 56 - Thread.Sleep(15); 64 + 65 + ServerState.Entities.Query(new QueryDescription().WithAll<Location>(), (ArchEntity entity, ref Location location) => 66 + { 67 + if (LocationUtil.Distance(new(location.X, location.Y, location.Z), new(location.LastUpdatedX, location.LastUpdatedY, location.LastUpdatedZ)) > 5) 68 + { 69 + 70 + } 71 + }); 57 72 } 58 73 ServerState.NetServer.Stop(); 59 74 }
+3 -1
Kestrel.Framework/Server/ServerState.cs
··· 2 2 using Kestrel.Framework.Server.Player; 3 3 using Kestrel.Framework.World; 4 4 using LiteNetLib; 5 + using ArchWorld = Arch.Core.World; 5 6 6 7 namespace Kestrel.Framework.Server; 7 8 8 9 public class ServerState 9 10 { 10 - public ConcurrentDictionary<String, ServerPlayer> PlayersByName = []; 11 + public ConcurrentDictionary<string, ServerPlayer> PlayersByName = []; 11 12 public ConcurrentDictionary<NetPeer, ServerPlayer> PlayersByConnection = []; 12 13 public NetManager NetServer { get; set; } 13 14 public World.World World; 15 + public ArchWorld Entities; 14 16 }
+2 -2
Kestrel.Framework/Utils/Profiler.cs
··· 7 7 public List<string> Labels = []; 8 8 public bool Enabled = false; 9 9 10 - public void Start(String label, Action action) 10 + public void Start(string label, Action action) 11 11 { 12 12 if (!Enabled) 13 13 { ··· 50 50 return; 51 51 52 52 StringBuilder sb = new(); 53 - String line = ""; 53 + string line = ""; 54 54 foreach (var label in Labels) 55 55 { 56 56 line += $",{label}";
+3
Kestrel.Framework/World/World.cs
··· 1 1 using System.Collections.Concurrent; 2 + using ArchWorld = Arch.Core.World; 2 3 using Kestrel.Framework.Utils; 3 4 4 5 namespace Kestrel.Framework.World; ··· 8 9 public readonly int ChunkSize = 32; 9 10 private readonly ConcurrentDictionary<Vector3I, Chunk> _chunks = new(); 10 11 public Generator Generator; 12 + public ArchWorld Entities; 11 13 12 14 public World() 13 15 { 16 + Entities = ArchWorld.Create(); 14 17 Generator = new(this); 15 18 } 16 19
+1 -1
Kestrel.Framework/obj/Debug/net8.0/Kestrel.Framework.AssemblyInfo.cs
··· 13 13 [assembly: System.Reflection.AssemblyCompanyAttribute("Kestrel.Framework")] 14 14 [assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")] 15 15 [assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] 16 - [assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+fed1ae780705181e5a568ebe91ec4725c380ee47")] 16 + [assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+c963e4d6653e153e28e1107a213a77bae4ba8d8d")] 17 17 [assembly: System.Reflection.AssemblyProductAttribute("Kestrel.Framework")] 18 18 [assembly: System.Reflection.AssemblyTitleAttribute("Kestrel.Framework")] 19 19 [assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
+1 -1
Kestrel.Framework/obj/Debug/net8.0/Kestrel.Framework.AssemblyInfoInputs.cache
··· 1 - ab618e824e0f8ef5b5d939cedb740ee05d62f9cc522db08b5246785058481c12 1 + 0a23af2b4c0ba81f5b179dfdaed0c17e660260bb124e1da8ac48b200907a6534
Kestrel.Framework/obj/Debug/net8.0/Kestrel.Framework.assets.cache

This is a binary file and will not be displayed.

Kestrel.Framework/obj/Debug/net8.0/Kestrel.Framework.csproj.AssemblyReference.cache

This is a binary file and will not be displayed.

+1 -1
Kestrel.Framework/obj/Debug/net8.0/Kestrel.Framework.csproj.CoreCompileInputs.cache
··· 1 - 01d9b945703e92ebedf0e5bdf24841fc33176990f6d44947f4ffd98f108bbd1c 1 + a990192d0f1e0c4dbe60db4542ec405afb3accb3505039f270b7a650eaccde80
Kestrel.Framework/obj/Debug/net8.0/Kestrel.Framework.dll

This is a binary file and will not be displayed.

Kestrel.Framework/obj/Debug/net8.0/Kestrel.Framework.pdb

This is a binary file and will not be displayed.

Kestrel.Framework/obj/Debug/net8.0/ref/Kestrel.Framework.dll

This is a binary file and will not be displayed.

Kestrel.Framework/obj/Debug/net8.0/refint/Kestrel.Framework.dll

This is a binary file and will not be displayed.

+4
Kestrel.Framework/obj/Kestrel.Framework.csproj.nuget.dgspec.json
··· 50 50 "net8.0": { 51 51 "targetAlias": "net8.0", 52 52 "dependencies": { 53 + "Arch": { 54 + "target": "Package", 55 + "version": "[2.1.0-beta, )" 56 + }, 53 57 "GlmSharp": { 54 58 "target": "Package", 55 59 "version": "[0.9.8, )"
+208
Kestrel.Framework/obj/project.assets.json
··· 2 2 "version": 3, 3 3 "targets": { 4 4 "net8.0": { 5 + "Arch/2.1.0-beta": { 6 + "type": "package", 7 + "dependencies": { 8 + "Arch.LowLevel": "1.1.5", 9 + "Collections.Pooled": "2.0.0-preview.27", 10 + "CommunityToolkit.HighPerformance": "8.2.2", 11 + "Microsoft.Extensions.ObjectPool": "7.0.0", 12 + "System.Runtime.CompilerServices.Unsafe": "6.0.0", 13 + "ZeroAllocJobScheduler": "1.1.2" 14 + }, 15 + "compile": { 16 + "lib/net8.0/Arch.dll": { 17 + "related": ".xml" 18 + } 19 + }, 20 + "runtime": { 21 + "lib/net8.0/Arch.dll": { 22 + "related": ".xml" 23 + } 24 + } 25 + }, 26 + "Arch.LowLevel/1.1.5": { 27 + "type": "package", 28 + "dependencies": { 29 + "CommunityToolkit.HighPerformance": "8.2.2", 30 + "System.Runtime.CompilerServices.Unsafe": "6.0.0" 31 + }, 32 + "compile": { 33 + "lib/net7.0/Arch.LowLevel.dll": { 34 + "related": ".xml" 35 + } 36 + }, 37 + "runtime": { 38 + "lib/net7.0/Arch.LowLevel.dll": { 39 + "related": ".xml" 40 + } 41 + } 42 + }, 43 + "Collections.Pooled/2.0.0-preview.27": { 44 + "type": "package", 45 + "compile": { 46 + "lib/netcoreapp3.0/Collections.Pooled.dll": { 47 + "related": ".xml" 48 + } 49 + }, 50 + "runtime": { 51 + "lib/netcoreapp3.0/Collections.Pooled.dll": { 52 + "related": ".xml" 53 + } 54 + } 55 + }, 56 + "CommunityToolkit.HighPerformance/8.2.2": { 57 + "type": "package", 58 + "compile": { 59 + "lib/net7.0/CommunityToolkit.HighPerformance.dll": { 60 + "related": ".pdb;.xml" 61 + } 62 + }, 63 + "runtime": { 64 + "lib/net7.0/CommunityToolkit.HighPerformance.dll": { 65 + "related": ".pdb;.xml" 66 + } 67 + } 68 + }, 5 69 "GlmSharp/0.9.8": { 6 70 "type": "package", 7 71 "compile": { ··· 68 132 }, 69 133 "build": { 70 134 "buildTransitive/net6.0/_._": {} 135 + } 136 + }, 137 + "Microsoft.Extensions.ObjectPool/7.0.0": { 138 + "type": "package", 139 + "compile": { 140 + "lib/net7.0/Microsoft.Extensions.ObjectPool.dll": { 141 + "related": ".xml" 142 + } 143 + }, 144 + "runtime": { 145 + "lib/net7.0/Microsoft.Extensions.ObjectPool.dll": { 146 + "related": ".xml" 147 + } 71 148 } 72 149 }, 73 150 "Silk.NET/2.22.0": { ··· 418 495 "rid": "win-x86" 419 496 } 420 497 } 498 + }, 499 + "ZeroAllocJobScheduler/1.1.2": { 500 + "type": "package", 501 + "compile": { 502 + "lib/netstandard2.1/Schedulers.dll": { 503 + "related": ".xml" 504 + } 505 + }, 506 + "runtime": { 507 + "lib/netstandard2.1/Schedulers.dll": { 508 + "related": ".xml" 509 + } 510 + } 421 511 } 422 512 } 423 513 }, 424 514 "libraries": { 515 + "Arch/2.1.0-beta": { 516 + "sha512": "BBO6zpSeFknoOdW8metfPS+N/cVBF3kh3nRjdBR6fgK0knKYi7e0YaZs0m3QaqE/M4x4/PSlfjRboljR9ve8BA==", 517 + "type": "package", 518 + "path": "arch/2.1.0-beta", 519 + "files": [ 520 + ".nupkg.metadata", 521 + ".signature.p7s", 522 + "README.md", 523 + "arch.2.1.0-beta.nupkg.sha512", 524 + "arch.nuspec", 525 + "lib/net6.0/Arch.dll", 526 + "lib/net6.0/Arch.xml", 527 + "lib/net8.0/Arch.dll", 528 + "lib/net8.0/Arch.xml", 529 + "lib/netstandard2.1/Arch.dll", 530 + "lib/netstandard2.1/Arch.xml" 531 + ] 532 + }, 533 + "Arch.LowLevel/1.1.5": { 534 + "sha512": "kc6T2qAsgzdb5RV+RIqVQ33LROhgXmA5fZRUhXRK+AJ1J58NML1i2M6XTKIj1ISirCwuqgYnM4qYkhqGcngG1g==", 535 + "type": "package", 536 + "path": "arch.lowlevel/1.1.5", 537 + "files": [ 538 + ".nupkg.metadata", 539 + ".signature.p7s", 540 + "arch.lowlevel.1.1.5.nupkg.sha512", 541 + "arch.lowlevel.nuspec", 542 + "lib/net6.0/Arch.LowLevel.dll", 543 + "lib/net6.0/Arch.LowLevel.xml", 544 + "lib/net7.0/Arch.LowLevel.dll", 545 + "lib/net7.0/Arch.LowLevel.xml", 546 + "lib/netstandard2.1/Arch.LowLevel.dll", 547 + "lib/netstandard2.1/Arch.LowLevel.xml" 548 + ] 549 + }, 550 + "Collections.Pooled/2.0.0-preview.27": { 551 + "sha512": "VS3uHc1GNamanS1i1hQ3PoZUddIagCswVMWvucAgqWwY2KVwgL2Q7raGu0hTqP/CWuROoq0RiNbIvu4ST1bMzg==", 552 + "type": "package", 553 + "path": "collections.pooled/2.0.0-preview.27", 554 + "files": [ 555 + ".nupkg.metadata", 556 + ".signature.p7s", 557 + "LICENSE.txt", 558 + "collections.pooled.2.0.0-preview.27.nupkg.sha512", 559 + "collections.pooled.nuspec", 560 + "lib/net461/Collections.Pooled.dll", 561 + "lib/net461/Collections.Pooled.xml", 562 + "lib/netcoreapp3.0/Collections.Pooled.dll", 563 + "lib/netcoreapp3.0/Collections.Pooled.xml", 564 + "lib/netstandard2.0/Collections.Pooled.dll", 565 + "lib/netstandard2.0/Collections.Pooled.xml", 566 + "lib/netstandard2.1/Collections.Pooled.dll", 567 + "lib/netstandard2.1/Collections.Pooled.xml" 568 + ] 569 + }, 570 + "CommunityToolkit.HighPerformance/8.2.2": { 571 + "sha512": "+zIp8d3sbtYaRbM6hqDs4Ui/z34j7DcUmleruZlYLE4CVxXq+MO8XJyIs42vzeTYFX+k0Iq1dEbBUnQ4z/Gnrw==", 572 + "type": "package", 573 + "path": "communitytoolkit.highperformance/8.2.2", 574 + "files": [ 575 + ".nupkg.metadata", 576 + ".signature.p7s", 577 + "Icon.png", 578 + "License.md", 579 + "ThirdPartyNotices.txt", 580 + "communitytoolkit.highperformance.8.2.2.nupkg.sha512", 581 + "communitytoolkit.highperformance.nuspec", 582 + "lib/net6.0/CommunityToolkit.HighPerformance.dll", 583 + "lib/net6.0/CommunityToolkit.HighPerformance.pdb", 584 + "lib/net6.0/CommunityToolkit.HighPerformance.xml", 585 + "lib/net7.0/CommunityToolkit.HighPerformance.dll", 586 + "lib/net7.0/CommunityToolkit.HighPerformance.pdb", 587 + "lib/net7.0/CommunityToolkit.HighPerformance.xml", 588 + "lib/netstandard2.0/CommunityToolkit.HighPerformance.dll", 589 + "lib/netstandard2.0/CommunityToolkit.HighPerformance.pdb", 590 + "lib/netstandard2.0/CommunityToolkit.HighPerformance.xml", 591 + "lib/netstandard2.1/CommunityToolkit.HighPerformance.dll", 592 + "lib/netstandard2.1/CommunityToolkit.HighPerformance.pdb", 593 + "lib/netstandard2.1/CommunityToolkit.HighPerformance.xml" 594 + ] 595 + }, 425 596 "GlmSharp/0.9.8": { 426 597 "sha512": "09/3MF8WhtFwfrE7bHwzhDhVTAQB2OvbzNVHLT8NFwNIdnGrud6PcyplHBxOaw2MMsgfm2cYsgwkj1YGttupwg==", 427 598 "type": "package", ··· 579 750 "microsoft.extensions.dependencymodel.8.0.0.nupkg.sha512", 580 751 "microsoft.extensions.dependencymodel.nuspec", 581 752 "useSharedDesignerContext.txt" 753 + ] 754 + }, 755 + "Microsoft.Extensions.ObjectPool/7.0.0": { 756 + "sha512": "udvKco0sAVgYGTBnHUb0tY9JQzJ/nPDiv/8PIyz69wl1AibeCDZOLVVI+6156dPfHmJH7ws5oUJRiW4ZmAvuuA==", 757 + "type": "package", 758 + "path": "microsoft.extensions.objectpool/7.0.0", 759 + "files": [ 760 + ".nupkg.metadata", 761 + ".signature.p7s", 762 + "Icon.png", 763 + "THIRD-PARTY-NOTICES.TXT", 764 + "lib/net462/Microsoft.Extensions.ObjectPool.dll", 765 + "lib/net462/Microsoft.Extensions.ObjectPool.xml", 766 + "lib/net7.0/Microsoft.Extensions.ObjectPool.dll", 767 + "lib/net7.0/Microsoft.Extensions.ObjectPool.xml", 768 + "lib/netstandard2.0/Microsoft.Extensions.ObjectPool.dll", 769 + "lib/netstandard2.0/Microsoft.Extensions.ObjectPool.xml", 770 + "microsoft.extensions.objectpool.7.0.0.nupkg.sha512", 771 + "microsoft.extensions.objectpool.nuspec" 582 772 ] 583 773 }, 584 774 "Silk.NET/2.22.0": { ··· 1131 1321 "ultz.native.glfw.3.4.0.nupkg.sha512", 1132 1322 "ultz.native.glfw.nuspec" 1133 1323 ] 1324 + }, 1325 + "ZeroAllocJobScheduler/1.1.2": { 1326 + "sha512": "PKu/zSvwV1fWxt8+CEW15O9OlQ2zB9UoeAaor/aJJ0QeTKxxSjigczYLoVPKjYLAQu3ddZQd7Z3zplVTtUgigQ==", 1327 + "type": "package", 1328 + "path": "zeroallocjobscheduler/1.1.2", 1329 + "files": [ 1330 + ".nupkg.metadata", 1331 + ".signature.p7s", 1332 + "lib/netstandard2.1/Schedulers.dll", 1333 + "lib/netstandard2.1/Schedulers.xml", 1334 + "zeroallocjobscheduler.1.1.2.nupkg.sha512", 1335 + "zeroallocjobscheduler.nuspec" 1336 + ] 1134 1337 } 1135 1338 }, 1136 1339 "projectFileDependencyGroups": { 1137 1340 "net8.0": [ 1341 + "Arch >= 2.1.0-beta", 1138 1342 "GlmSharp >= 0.9.8", 1139 1343 "LiteNetLib >= 1.3.1", 1140 1344 "Silk.NET >= 2.22.0", ··· 1192 1396 "net8.0": { 1193 1397 "targetAlias": "net8.0", 1194 1398 "dependencies": { 1399 + "Arch": { 1400 + "target": "Package", 1401 + "version": "[2.1.0-beta, )" 1402 + }, 1195 1403 "GlmSharp": { 1196 1404 "target": "Package", 1197 1405 "version": "[0.9.8, )"
+8 -2
Kestrel.Framework/obj/project.nuget.cache
··· 1 1 { 2 2 "version": 2, 3 - "dgSpecHash": "lPhQ8UM+Zuw=", 3 + "dgSpecHash": "dxY2iKUezsQ=", 4 4 "success": true, 5 5 "projectFilePath": "D:\\Projects2025\\Coding\\C#\\kestrel\\Kestrel.Framework\\Kestrel.Framework.csproj", 6 6 "expectedPackageFiles": [ 7 + "C:\\Users\\wille\\.nuget\\packages\\arch\\2.1.0-beta\\arch.2.1.0-beta.nupkg.sha512", 8 + "C:\\Users\\wille\\.nuget\\packages\\arch.lowlevel\\1.1.5\\arch.lowlevel.1.1.5.nupkg.sha512", 9 + "C:\\Users\\wille\\.nuget\\packages\\collections.pooled\\2.0.0-preview.27\\collections.pooled.2.0.0-preview.27.nupkg.sha512", 10 + "C:\\Users\\wille\\.nuget\\packages\\communitytoolkit.highperformance\\8.2.2\\communitytoolkit.highperformance.8.2.2.nupkg.sha512", 7 11 "C:\\Users\\wille\\.nuget\\packages\\glmsharp\\0.9.8\\glmsharp.0.9.8.nupkg.sha512", 8 12 "C:\\Users\\wille\\.nuget\\packages\\litenetlib\\1.3.1\\litenetlib.1.3.1.nupkg.sha512", 9 13 "C:\\Users\\wille\\.nuget\\packages\\microsoft.csharp\\4.7.0\\microsoft.csharp.4.7.0.nupkg.sha512", 10 14 "C:\\Users\\wille\\.nuget\\packages\\microsoft.dotnet.platformabstractions\\3.1.6\\microsoft.dotnet.platformabstractions.3.1.6.nupkg.sha512", 11 15 "C:\\Users\\wille\\.nuget\\packages\\microsoft.extensions.dependencymodel\\8.0.0\\microsoft.extensions.dependencymodel.8.0.0.nupkg.sha512", 16 + "C:\\Users\\wille\\.nuget\\packages\\microsoft.extensions.objectpool\\7.0.0\\microsoft.extensions.objectpool.7.0.0.nupkg.sha512", 12 17 "C:\\Users\\wille\\.nuget\\packages\\silk.net\\2.22.0\\silk.net.2.22.0.nupkg.sha512", 13 18 "C:\\Users\\wille\\.nuget\\packages\\silk.net.core\\2.22.0\\silk.net.core.2.22.0.nupkg.sha512", 14 19 "C:\\Users\\wille\\.nuget\\packages\\silk.net.glfw\\2.22.0\\silk.net.glfw.2.22.0.nupkg.sha512", ··· 30 35 "C:\\Users\\wille\\.nuget\\packages\\system.runtime.compilerservices.unsafe\\6.0.0\\system.runtime.compilerservices.unsafe.6.0.0.nupkg.sha512", 31 36 "C:\\Users\\wille\\.nuget\\packages\\system.text.encodings.web\\8.0.0\\system.text.encodings.web.8.0.0.nupkg.sha512", 32 37 "C:\\Users\\wille\\.nuget\\packages\\system.text.json\\8.0.0\\system.text.json.8.0.0.nupkg.sha512", 33 - "C:\\Users\\wille\\.nuget\\packages\\ultz.native.glfw\\3.4.0\\ultz.native.glfw.3.4.0.nupkg.sha512" 38 + "C:\\Users\\wille\\.nuget\\packages\\ultz.native.glfw\\3.4.0\\ultz.native.glfw.3.4.0.nupkg.sha512", 39 + "C:\\Users\\wille\\.nuget\\packages\\zeroallocjobscheduler\\1.1.2\\zeroallocjobscheduler.1.1.2.nupkg.sha512" 34 40 ], 35 41 "logs": [ 36 42 {
+1 -1
Kestrel.Game.Client/obj/Debug/net8.0/Kestrel.Game.Client.AssemblyInfo.cs
··· 13 13 [assembly: System.Reflection.AssemblyCompanyAttribute("Kestrel.Game.Client")] 14 14 [assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")] 15 15 [assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] 16 - [assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+fed1ae780705181e5a568ebe91ec4725c380ee47")] 16 + [assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+c963e4d6653e153e28e1107a213a77bae4ba8d8d")] 17 17 [assembly: System.Reflection.AssemblyProductAttribute("Kestrel.Game.Client")] 18 18 [assembly: System.Reflection.AssemblyTitleAttribute("Kestrel.Game.Client")] 19 19 [assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
+1 -1
Kestrel.Game.Client/obj/Debug/net8.0/Kestrel.Game.Client.AssemblyInfoInputs.cache
··· 1 - 3e0f41ed066275b0ad1155fc1fa7224688a69492c58573d815025bd8d95b09b7 1 + e99fe29f6ebffe1c3aea5ac03e8c541b6d4f7ac9461920e34ae1eec3be885612
Kestrel.Game.Client/obj/Debug/net8.0/Kestrel.Game.Client.assets.cache

This is a binary file and will not be displayed.

Kestrel.Game.Client/obj/Debug/net8.0/Kestrel.Game.Client.csproj.AssemblyReference.cache

This is a binary file and will not be displayed.

+1 -1
Kestrel.Game.Client/obj/Debug/net8.0/Kestrel.Game.Client.csproj.CoreCompileInputs.cache
··· 1 - aa655690a05bdce3ba30ed7ba94eb5b926fb78d5b7cf864511cd6db52e753ef4 1 + 600c41fc6fd1c650e18ddfa3ec3545801561983d647a36fe71527ba88715bea7
+6
Kestrel.Game.Client/obj/Debug/net8.0/Kestrel.Game.Client.csproj.FileListAbsolute.txt
··· 47 47 D:\Projects2025\Coding\C#\kestrel\Kestrel.Game.Client\obj\Debug\net8.0\Kestrel.Game.Client.pdb 48 48 D:\Projects2025\Coding\C#\kestrel\Kestrel.Game.Client\obj\Debug\net8.0\Kestrel.Game.Client.genruntimeconfig.cache 49 49 D:\Projects2025\Coding\C#\kestrel\Kestrel.Game.Client\obj\Debug\net8.0\ref\Kestrel.Game.Client.dll 50 + D:\Projects2025\Coding\C#\kestrel\Kestrel.Game.Client\bin\Debug\net8.0\Arch.dll 51 + D:\Projects2025\Coding\C#\kestrel\Kestrel.Game.Client\bin\Debug\net8.0\Arch.LowLevel.dll 52 + D:\Projects2025\Coding\C#\kestrel\Kestrel.Game.Client\bin\Debug\net8.0\Collections.Pooled.dll 53 + D:\Projects2025\Coding\C#\kestrel\Kestrel.Game.Client\bin\Debug\net8.0\CommunityToolkit.HighPerformance.dll 54 + D:\Projects2025\Coding\C#\kestrel\Kestrel.Game.Client\bin\Debug\net8.0\Microsoft.Extensions.ObjectPool.dll 55 + D:\Projects2025\Coding\C#\kestrel\Kestrel.Game.Client\bin\Debug\net8.0\Schedulers.dll
Kestrel.Game.Client/obj/Debug/net8.0/Kestrel.Game.Client.dll

This is a binary file and will not be displayed.

Kestrel.Game.Client/obj/Debug/net8.0/Kestrel.Game.Client.pdb

This is a binary file and will not be displayed.

+1 -1
Kestrel.Game.Client/obj/Debug/net8.0/Kestrel.Game.Client.sourcelink.json
··· 1 - {"documents":{"D:\\Projects2025\\Coding\\C#\\kestrel\\*":"https://raw.githubusercontent.com/dinkelspiel/kestrel/fed1ae780705181e5a568ebe91ec4725c380ee47/*"}} 1 + {"documents":{"D:\\Projects2025\\Coding\\C#\\kestrel\\*":"https://raw.githubusercontent.com/dinkelspiel/kestrel/c963e4d6653e153e28e1107a213a77bae4ba8d8d/*"}}
Kestrel.Game.Client/obj/Debug/net8.0/apphost.exe

This is a binary file and will not be displayed.

Kestrel.Game.Client/obj/Debug/net8.0/ref/Kestrel.Game.Client.dll

This is a binary file and will not be displayed.

Kestrel.Game.Client/obj/Debug/net8.0/refint/Kestrel.Game.Client.dll

This is a binary file and will not be displayed.

+4
Kestrel.Game.Client/obj/Kestrel.Game.Client.csproj.nuget.dgspec.json
··· 50 50 "net8.0": { 51 51 "targetAlias": "net8.0", 52 52 "dependencies": { 53 + "Arch": { 54 + "target": "Package", 55 + "version": "[2.1.0-beta, )" 56 + }, 53 57 "GlmSharp": { 54 58 "target": "Package", 55 59 "version": "[0.9.8, )"
+204
Kestrel.Game.Client/obj/project.assets.json
··· 2 2 "version": 3, 3 3 "targets": { 4 4 "net8.0": { 5 + "Arch/2.1.0-beta": { 6 + "type": "package", 7 + "dependencies": { 8 + "Arch.LowLevel": "1.1.5", 9 + "Collections.Pooled": "2.0.0-preview.27", 10 + "CommunityToolkit.HighPerformance": "8.2.2", 11 + "Microsoft.Extensions.ObjectPool": "7.0.0", 12 + "System.Runtime.CompilerServices.Unsafe": "6.0.0", 13 + "ZeroAllocJobScheduler": "1.1.2" 14 + }, 15 + "compile": { 16 + "lib/net8.0/Arch.dll": { 17 + "related": ".xml" 18 + } 19 + }, 20 + "runtime": { 21 + "lib/net8.0/Arch.dll": { 22 + "related": ".xml" 23 + } 24 + } 25 + }, 26 + "Arch.LowLevel/1.1.5": { 27 + "type": "package", 28 + "dependencies": { 29 + "CommunityToolkit.HighPerformance": "8.2.2", 30 + "System.Runtime.CompilerServices.Unsafe": "6.0.0" 31 + }, 32 + "compile": { 33 + "lib/net7.0/Arch.LowLevel.dll": { 34 + "related": ".xml" 35 + } 36 + }, 37 + "runtime": { 38 + "lib/net7.0/Arch.LowLevel.dll": { 39 + "related": ".xml" 40 + } 41 + } 42 + }, 43 + "Collections.Pooled/2.0.0-preview.27": { 44 + "type": "package", 45 + "compile": { 46 + "lib/netcoreapp3.0/Collections.Pooled.dll": { 47 + "related": ".xml" 48 + } 49 + }, 50 + "runtime": { 51 + "lib/netcoreapp3.0/Collections.Pooled.dll": { 52 + "related": ".xml" 53 + } 54 + } 55 + }, 56 + "CommunityToolkit.HighPerformance/8.2.2": { 57 + "type": "package", 58 + "compile": { 59 + "lib/net7.0/CommunityToolkit.HighPerformance.dll": { 60 + "related": ".pdb;.xml" 61 + } 62 + }, 63 + "runtime": { 64 + "lib/net7.0/CommunityToolkit.HighPerformance.dll": { 65 + "related": ".pdb;.xml" 66 + } 67 + } 68 + }, 5 69 "GlmSharp/0.9.8": { 6 70 "type": "package", 7 71 "compile": { ··· 108 172 }, 109 173 "build": { 110 174 "buildTransitive/net6.0/_._": {} 175 + } 176 + }, 177 + "Microsoft.Extensions.ObjectPool/7.0.0": { 178 + "type": "package", 179 + "compile": { 180 + "lib/net7.0/Microsoft.Extensions.ObjectPool.dll": { 181 + "related": ".xml" 182 + } 183 + }, 184 + "runtime": { 185 + "lib/net7.0/Microsoft.Extensions.ObjectPool.dll": { 186 + "related": ".xml" 187 + } 111 188 } 112 189 }, 113 190 "Microsoft.NET.ILLink.Tasks/8.0.11": { ··· 465 542 } 466 543 } 467 544 }, 545 + "ZeroAllocJobScheduler/1.1.2": { 546 + "type": "package", 547 + "compile": { 548 + "lib/netstandard2.1/Schedulers.dll": { 549 + "related": ".xml" 550 + } 551 + }, 552 + "runtime": { 553 + "lib/netstandard2.1/Schedulers.dll": { 554 + "related": ".xml" 555 + } 556 + } 557 + }, 468 558 "Kestrel.Framework/1.0.0": { 469 559 "type": "project", 470 560 "framework": ".NETCoreApp,Version=v8.0", 471 561 "dependencies": { 562 + "Arch": "2.1.0-beta", 472 563 "GlmSharp": "0.9.8", 473 564 "LiteNetLib": "1.3.1", 474 565 "Silk.NET": "2.22.0", ··· 485 576 } 486 577 }, 487 578 "libraries": { 579 + "Arch/2.1.0-beta": { 580 + "sha512": "BBO6zpSeFknoOdW8metfPS+N/cVBF3kh3nRjdBR6fgK0knKYi7e0YaZs0m3QaqE/M4x4/PSlfjRboljR9ve8BA==", 581 + "type": "package", 582 + "path": "arch/2.1.0-beta", 583 + "files": [ 584 + ".nupkg.metadata", 585 + ".signature.p7s", 586 + "README.md", 587 + "arch.2.1.0-beta.nupkg.sha512", 588 + "arch.nuspec", 589 + "lib/net6.0/Arch.dll", 590 + "lib/net6.0/Arch.xml", 591 + "lib/net8.0/Arch.dll", 592 + "lib/net8.0/Arch.xml", 593 + "lib/netstandard2.1/Arch.dll", 594 + "lib/netstandard2.1/Arch.xml" 595 + ] 596 + }, 597 + "Arch.LowLevel/1.1.5": { 598 + "sha512": "kc6T2qAsgzdb5RV+RIqVQ33LROhgXmA5fZRUhXRK+AJ1J58NML1i2M6XTKIj1ISirCwuqgYnM4qYkhqGcngG1g==", 599 + "type": "package", 600 + "path": "arch.lowlevel/1.1.5", 601 + "files": [ 602 + ".nupkg.metadata", 603 + ".signature.p7s", 604 + "arch.lowlevel.1.1.5.nupkg.sha512", 605 + "arch.lowlevel.nuspec", 606 + "lib/net6.0/Arch.LowLevel.dll", 607 + "lib/net6.0/Arch.LowLevel.xml", 608 + "lib/net7.0/Arch.LowLevel.dll", 609 + "lib/net7.0/Arch.LowLevel.xml", 610 + "lib/netstandard2.1/Arch.LowLevel.dll", 611 + "lib/netstandard2.1/Arch.LowLevel.xml" 612 + ] 613 + }, 614 + "Collections.Pooled/2.0.0-preview.27": { 615 + "sha512": "VS3uHc1GNamanS1i1hQ3PoZUddIagCswVMWvucAgqWwY2KVwgL2Q7raGu0hTqP/CWuROoq0RiNbIvu4ST1bMzg==", 616 + "type": "package", 617 + "path": "collections.pooled/2.0.0-preview.27", 618 + "files": [ 619 + ".nupkg.metadata", 620 + ".signature.p7s", 621 + "LICENSE.txt", 622 + "collections.pooled.2.0.0-preview.27.nupkg.sha512", 623 + "collections.pooled.nuspec", 624 + "lib/net461/Collections.Pooled.dll", 625 + "lib/net461/Collections.Pooled.xml", 626 + "lib/netcoreapp3.0/Collections.Pooled.dll", 627 + "lib/netcoreapp3.0/Collections.Pooled.xml", 628 + "lib/netstandard2.0/Collections.Pooled.dll", 629 + "lib/netstandard2.0/Collections.Pooled.xml", 630 + "lib/netstandard2.1/Collections.Pooled.dll", 631 + "lib/netstandard2.1/Collections.Pooled.xml" 632 + ] 633 + }, 634 + "CommunityToolkit.HighPerformance/8.2.2": { 635 + "sha512": "+zIp8d3sbtYaRbM6hqDs4Ui/z34j7DcUmleruZlYLE4CVxXq+MO8XJyIs42vzeTYFX+k0Iq1dEbBUnQ4z/Gnrw==", 636 + "type": "package", 637 + "path": "communitytoolkit.highperformance/8.2.2", 638 + "files": [ 639 + ".nupkg.metadata", 640 + ".signature.p7s", 641 + "Icon.png", 642 + "License.md", 643 + "ThirdPartyNotices.txt", 644 + "communitytoolkit.highperformance.8.2.2.nupkg.sha512", 645 + "communitytoolkit.highperformance.nuspec", 646 + "lib/net6.0/CommunityToolkit.HighPerformance.dll", 647 + "lib/net6.0/CommunityToolkit.HighPerformance.pdb", 648 + "lib/net6.0/CommunityToolkit.HighPerformance.xml", 649 + "lib/net7.0/CommunityToolkit.HighPerformance.dll", 650 + "lib/net7.0/CommunityToolkit.HighPerformance.pdb", 651 + "lib/net7.0/CommunityToolkit.HighPerformance.xml", 652 + "lib/netstandard2.0/CommunityToolkit.HighPerformance.dll", 653 + "lib/netstandard2.0/CommunityToolkit.HighPerformance.pdb", 654 + "lib/netstandard2.0/CommunityToolkit.HighPerformance.xml", 655 + "lib/netstandard2.1/CommunityToolkit.HighPerformance.dll", 656 + "lib/netstandard2.1/CommunityToolkit.HighPerformance.pdb", 657 + "lib/netstandard2.1/CommunityToolkit.HighPerformance.xml" 658 + ] 659 + }, 488 660 "GlmSharp/0.9.8": { 489 661 "sha512": "09/3MF8WhtFwfrE7bHwzhDhVTAQB2OvbzNVHLT8NFwNIdnGrud6PcyplHBxOaw2MMsgfm2cYsgwkj1YGttupwg==", 490 662 "type": "package", ··· 665 837 "microsoft.extensions.dependencymodel.8.0.0.nupkg.sha512", 666 838 "microsoft.extensions.dependencymodel.nuspec", 667 839 "useSharedDesignerContext.txt" 840 + ] 841 + }, 842 + "Microsoft.Extensions.ObjectPool/7.0.0": { 843 + "sha512": "udvKco0sAVgYGTBnHUb0tY9JQzJ/nPDiv/8PIyz69wl1AibeCDZOLVVI+6156dPfHmJH7ws5oUJRiW4ZmAvuuA==", 844 + "type": "package", 845 + "path": "microsoft.extensions.objectpool/7.0.0", 846 + "files": [ 847 + ".nupkg.metadata", 848 + ".signature.p7s", 849 + "Icon.png", 850 + "THIRD-PARTY-NOTICES.TXT", 851 + "lib/net462/Microsoft.Extensions.ObjectPool.dll", 852 + "lib/net462/Microsoft.Extensions.ObjectPool.xml", 853 + "lib/net7.0/Microsoft.Extensions.ObjectPool.dll", 854 + "lib/net7.0/Microsoft.Extensions.ObjectPool.xml", 855 + "lib/netstandard2.0/Microsoft.Extensions.ObjectPool.dll", 856 + "lib/netstandard2.0/Microsoft.Extensions.ObjectPool.xml", 857 + "microsoft.extensions.objectpool.7.0.0.nupkg.sha512", 858 + "microsoft.extensions.objectpool.nuspec" 668 859 ] 669 860 }, 670 861 "Microsoft.NET.ILLink.Tasks/8.0.11": { ··· 1267 1458 "silkdotnet_v3.png", 1268 1459 "ultz.native.glfw.3.4.0.nupkg.sha512", 1269 1460 "ultz.native.glfw.nuspec" 1461 + ] 1462 + }, 1463 + "ZeroAllocJobScheduler/1.1.2": { 1464 + "sha512": "PKu/zSvwV1fWxt8+CEW15O9OlQ2zB9UoeAaor/aJJ0QeTKxxSjigczYLoVPKjYLAQu3ddZQd7Z3zplVTtUgigQ==", 1465 + "type": "package", 1466 + "path": "zeroallocjobscheduler/1.1.2", 1467 + "files": [ 1468 + ".nupkg.metadata", 1469 + ".signature.p7s", 1470 + "lib/netstandard2.1/Schedulers.dll", 1471 + "lib/netstandard2.1/Schedulers.xml", 1472 + "zeroallocjobscheduler.1.1.2.nupkg.sha512", 1473 + "zeroallocjobscheduler.nuspec" 1270 1474 ] 1271 1475 }, 1272 1476 "Kestrel.Framework/1.0.0": {
+8 -2
Kestrel.Game.Client/obj/project.nuget.cache
··· 1 1 { 2 2 "version": 2, 3 - "dgSpecHash": "0MzlWIsYccI=", 3 + "dgSpecHash": "ndsClv/dVTM=", 4 4 "success": true, 5 5 "projectFilePath": "D:\\Projects2025\\Coding\\C#\\kestrel\\Kestrel.Game.Client\\Kestrel.Game.Client.csproj", 6 6 "expectedPackageFiles": [ 7 + "C:\\Users\\wille\\.nuget\\packages\\arch\\2.1.0-beta\\arch.2.1.0-beta.nupkg.sha512", 8 + "C:\\Users\\wille\\.nuget\\packages\\arch.lowlevel\\1.1.5\\arch.lowlevel.1.1.5.nupkg.sha512", 9 + "C:\\Users\\wille\\.nuget\\packages\\collections.pooled\\2.0.0-preview.27\\collections.pooled.2.0.0-preview.27.nupkg.sha512", 10 + "C:\\Users\\wille\\.nuget\\packages\\communitytoolkit.highperformance\\8.2.2\\communitytoolkit.highperformance.8.2.2.nupkg.sha512", 7 11 "C:\\Users\\wille\\.nuget\\packages\\glmsharp\\0.9.8\\glmsharp.0.9.8.nupkg.sha512", 8 12 "C:\\Users\\wille\\.nuget\\packages\\imgui.net\\1.91.6.1\\imgui.net.1.91.6.1.nupkg.sha512", 9 13 "C:\\Users\\wille\\.nuget\\packages\\litenetlib\\1.3.1\\litenetlib.1.3.1.nupkg.sha512", 10 14 "C:\\Users\\wille\\.nuget\\packages\\microsoft.csharp\\4.7.0\\microsoft.csharp.4.7.0.nupkg.sha512", 11 15 "C:\\Users\\wille\\.nuget\\packages\\microsoft.dotnet.platformabstractions\\3.1.6\\microsoft.dotnet.platformabstractions.3.1.6.nupkg.sha512", 12 16 "C:\\Users\\wille\\.nuget\\packages\\microsoft.extensions.dependencymodel\\8.0.0\\microsoft.extensions.dependencymodel.8.0.0.nupkg.sha512", 17 + "C:\\Users\\wille\\.nuget\\packages\\microsoft.extensions.objectpool\\7.0.0\\microsoft.extensions.objectpool.7.0.0.nupkg.sha512", 13 18 "C:\\Users\\wille\\.nuget\\packages\\microsoft.net.illink.tasks\\8.0.11\\microsoft.net.illink.tasks.8.0.11.nupkg.sha512", 14 19 "C:\\Users\\wille\\.nuget\\packages\\silk.net\\2.22.0\\silk.net.2.22.0.nupkg.sha512", 15 20 "C:\\Users\\wille\\.nuget\\packages\\silk.net.core\\2.22.0\\silk.net.core.2.22.0.nupkg.sha512", ··· 32 37 "C:\\Users\\wille\\.nuget\\packages\\system.runtime.compilerservices.unsafe\\6.0.0\\system.runtime.compilerservices.unsafe.6.0.0.nupkg.sha512", 33 38 "C:\\Users\\wille\\.nuget\\packages\\system.text.encodings.web\\8.0.0\\system.text.encodings.web.8.0.0.nupkg.sha512", 34 39 "C:\\Users\\wille\\.nuget\\packages\\system.text.json\\8.0.0\\system.text.json.8.0.0.nupkg.sha512", 35 - "C:\\Users\\wille\\.nuget\\packages\\ultz.native.glfw\\3.4.0\\ultz.native.glfw.3.4.0.nupkg.sha512" 40 + "C:\\Users\\wille\\.nuget\\packages\\ultz.native.glfw\\3.4.0\\ultz.native.glfw.3.4.0.nupkg.sha512", 41 + "C:\\Users\\wille\\.nuget\\packages\\zeroallocjobscheduler\\1.1.2\\zeroallocjobscheduler.1.1.2.nupkg.sha512" 36 42 ], 37 43 "logs": [ 38 44 {
+1
assets/models/Leaves.bbmodel
··· 1 + {"meta":{"format_version":"4.10","model_format":"free","box_uv":false},"name":"Leaves","model_identifier":"","visible_box":[1,1,0],"variable_placeholders":"","variable_placeholder_buttons":[],"timeline_setups":[],"unhandled_root_fields":{},"resolution":{"width":16,"height":16},"elements":[{"name":"cube","box_uv":false,"rescale":false,"locked":false,"light_emission":0,"render_order":"default","allow_mirror_modeling":true,"from":[0,0,-8],"to":[0,16,8],"autouv":0,"color":2,"origin":[1,0,-7],"faces":{"north":{"uv":[0,0,0,16]},"east":{"uv":[80,0,96,16],"texture":0},"south":{"uv":[0,0,0,16]},"west":{"uv":[80,0,96,16],"texture":0},"up":{"uv":[0,0,0,16]},"down":{"uv":[0,0,0,16]}},"type":"cube","uuid":"0ae5bbbe-cb2b-0d8f-9023-c222519cbd2f"},{"name":"cube","box_uv":false,"rescale":false,"locked":false,"light_emission":0,"render_order":"default","allow_mirror_modeling":true,"from":[7,9,-8],"to":[7,25,8],"autouv":0,"color":2,"rotation":[0,0,90],"origin":[8,9,-7],"faces":{"north":{"uv":[0,0,0,16]},"east":{"uv":[80,0,96,16],"texture":0},"south":{"uv":[0,0,0,16]},"west":{"uv":[80,0,96,16],"texture":0},"up":{"uv":[0,0,0,16]},"down":{"uv":[0,0,0,16]}},"type":"cube","uuid":"d4704c62-df26-e31b-24b2-73d4dc3a0734"},{"name":"cube","box_uv":false,"rescale":false,"locked":false,"light_emission":0,"render_order":"default","allow_mirror_modeling":true,"from":[7,15,0],"to":[7,31,16],"autouv":0,"color":2,"rotation":[0,-90,90],"origin":[8,15,1],"faces":{"north":{"uv":[0,0,0,16]},"east":{"uv":[80,0,96,16],"texture":0},"south":{"uv":[0,0,0,16]},"west":{"uv":[80,0,96,16],"texture":0},"up":{"uv":[0,0,0,16]},"down":{"uv":[0,0,0,16]}},"type":"cube","uuid":"707b5970-5a3c-854b-386b-256f055420a3"}],"outliner":[{"name":"bone","origin":[8,15,1],"color":0,"uuid":"caed9779-99b3-b652-02bd-3445786e61fa","export":true,"mirror_uv":false,"isOpen":true,"locked":false,"visibility":true,"autouv":0,"selected":false,"children":["707b5970-5a3c-854b-386b-256f055420a3","0ae5bbbe-cb2b-0d8f-9023-c222519cbd2f","d4704c62-df26-e31b-24b2-73d4dc3a0734"]}],"textures":[{"path":"D:\\Projects2025\\Coding\\C#\\kestrel\\assets\\textures\\atlas.png","name":"atlas.png","folder":"","namespace":"","id":"0","group":"","width":512,"height":512,"uv_width":512,"uv_height":512,"particle":false,"use_as_default":false,"layers_enabled":false,"sync_to_project":"","render_mode":"default","render_sides":"auto","pbr_channel":"color","frame_time":1,"frame_order_type":"loop","frame_order":"","frame_interpolate":false,"visible":true,"internal":true,"saved":true,"uuid":"6debdccc-d06f-ffd8-a6f6-9229d1f4e7b1","relative_path":"../textures/atlas.png","source":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAgAAAAIACAYAAAD0eNT6AAAAAXNSR0IArs4c6QAAGsNJREFUeF7t3b+K5YUZx+FdbAMWikWKBVsrLSxS2OcacgchuQNrsbLTW7CxFME7iKXVNoEEtogkRBBvYOUM/OQwzrjIOX73w86z1f5xfN993rOcz5yZ2X38w3f/ev7ogm8/fvXXC9760aNPXv/DRW//5TcfXPT2rz37+KK3/+cX/3183//gLx/9+fnnH379i1+/7+cvWsQbEyBAgACB3yDwWAD8PgHgyf83PAr9pwQIECAwFxAAV3wF4PxJ//T90zXPXwHwnv/88W0gAQIECNwjIAB+pwA4ef/pb+88/8dnT28+BHD6/tt/fCII/FEkQIAAgYSAALhiAJwuev5e/ulJ//zKRwwcrw7cfoUg8YiwBAECBAg8CAEBcGEAvP/uezcPlOOl/tOT+7//8+znB8////f9zffffOuNR6cAePfvT26i4NtPn937yYMP4pHnN0mAAAECL1VAAFwYAKevAjg96T/97unNk/rxXv/xxH9c9xQAp2/HqwAv9eqGEyBAgMCDFxAAVwiA41F0/pL/7QA4XgUQAQ/+zxwAAgQIJAQEwIUBcPoQwPHy/33v/d9+FeD049ufEJh4NFiCAAECBB6MgAC4MACODwEcH/e/6z3/uz4McNeXCT6YR53fKAECBAi8dAEBcIUAuOtDAMfPnX8S4Pm1fS7AS3/sW4AAAQIPWkAAXCkAjs/+Pz2xH1/zf/7VAJ78H/SfM795AgQI5AQEwBUC4Pbf8Hf8+PyTAo+P+d/1FwLlHhUWIkCAAIFXXkAAXCEAjkfJfR/Xv/3z/krgV/7Pld8gAQIE8gIC4MoB8Gv/+t+L/q2A/KPFggQIECDwyggIgCsGwIseFd7zf5GQXydAgACBlYC/jnYlbQ4BAgQIEAgJCIDQMaxCgAABAgRWAgJgJW0OAQIECBAICQiA0DGsQoAAAQIEVgICYCVtDgECBAgQCAkIgNAxrEKAAAECBFYCAmAlbQ4BAgQIEAgJCIDQMaxCgAABAgRWAgJgJW0OAQIECBAICQiA0DGsQoAAAQIEVgICYCVtDgECBAgQCAkIgNAxrEKAAAECBFYCAmAlbQ4BAgQIEAgJCIDQMaxCgAABAgRWAgJgJW0OAQIECBAICQiA0DGsQoAAAQIEVgICYCVtDgECBAgQCAkIgNAxrEKAAAECBFYCAmAlbQ4BAgQIEAgJCIDQMaxCgAABAgRWAgJgJW0OAQIECBAICQiA0DGsQoAAAQIEVgICYCVtDgECBAgQCAkIgNAxrEKAAAECBFYCAmAlbQ4BAgQIEAgJCIDQMaxCgAABAgRWAgJgJW0OAQIECBAICQiA0DGsQoAAAQIEVgICYCVtDgECBAgQCAkIgNAxrEKAAAECBFYCAmAlbQ4BAgQIEAgJCIDQMaxCgAABAgRWAgJgJW0OAQIECBAICQiA0DGsQoAAAQIEVgICYCVtDgECBAgQCAkIgNAxrEKAAAECBFYCAmAlbQ4BAgQIEAgJCIDQMaxCgAABAgRWAgJgJW0OAQIECBAICQiA0DGsQoAAAQIEVgICYCVtDgECBAgQCAkIgNAxrEKAAAECBFYCAmAlbQ4BAgQIEAgJCIDQMaxCgAABAgRWAgJgJW0OAQIECBAICQiA0DGsQoAAAQIEVgICYCVtDgECBAgQCAkIgNAxrEKAAAECBFYCAmAlbQ4BAgQIEAgJCIDQMaxCgAABAgRWAgJgJW0OAQIECBAICQiA0DGsQoAAAQIEVgICYCVtDgECBAgQCAkIgNAxrEKAAAECBFYCAmAlbQ4BAgQIEAgJCIDQMaxCgAABAgRWAgJgJW0OAQIECBAICQiA0DGsQoAAAQIEVgICYCVtDgECBAgQCAkIgNAxrEKAAAECBFYCAmAlbQ4BAgQIEAgJCIDQMaxCgAABAgRWAgJgJW0OAQIECBAICQiA0DGsQoAAAQIEVgICYCVtDgECBAgQCAkIgNAxrEKAAAECBFYCAmAlbQ4BAgQIEAgJCIDQMaxCgAABAgRWAgJgJW0OAQIECBAICQiA0DGsQoAAAQIEVgICYCVtDgECBAgQCAkIgNAxrEKAAAECBFYCAmAlbQ4BAgQIEAgJCIDQMaxCgAABAgRWAgJgJW0OAQIECBAICQiA0DGsQoAAAQIEVgICYCVtDgECBAgQCAkIgNAxrEKAAAECBFYCAmAlbQ4BAgQIEAgJCIDQMaxCgAABAgRWAgJgJW0OAQIECBAICQiA0DGsQoAAAQIEVgICYCVtDgECBAgQCAkIgNAxrEKAAAECBFYCAmAlbQ4BAgQIEAgJCIDQMaxCgAABAgRWAgJgJW0OAQIECBAICQiA0DGsQoAAAQIEVgICYCVtDgECBAgQCAkIgNAxrEKAAAECBFYCAmAlbQ4BAgQIEAgJCIDQMaxCgAABAgRWAgJgJW0OAQIECBAICQiA0DGsQoAAAQIEVgICYCVtDgECBAgQCAkIgNAxrEKAAAECBFYCAmAlbQ4BAgQIEAgJCIDQMaxCgAABAgRWAgJgJW0OAQIECBAICQiA0DGsQoAAAQIEVgICYCVtDgECBAgQCAkIgNAxrEKAAAECBFYCAmAlbQ4BAgQIEAgJCIDQMaxCgAABAgRWAgJgJW0OAQIECBAICQiA0DGsQoAAAQIEVgICYCVtDgECBAgQCAkIgNAxrEKAAAECBFYCAmAlbQ4BAgQIEAgJCIDQMaxCgAABAgRWAgJgJW0OAQIECBAICQiA0DGsQoAAAQIEVgICYCVtDgECBAgQCAkIgNAxrEKAAAECBFYCAmAlbQ4BAgQIEAgJCIDQMaxCgAABAgRWAgJgJW0OAQIECBAICQiA0DGsQoAAAQIEVgICYCVtDgECBAgQCAkIgNAxrEKAAAECBFYCAmAlbQ4BAgQIEAgJCIDQMaxCgAABAgRWAgJgJW0OAQIECBAICQiA0DGsQoAAAQIEVgICYCVtDgECBAgQCAkIgNAxrEKAAAECBFYCAmAlbQ4BAgQIEAgJCIDQMaxCgAABAgRWAgJgJW0OAQIECBAICQiA0DGsQoAAAQIEVgICYCVtDgECBAgQCAkIgNAxrEKAAAECBFYCAmAlbQ4BAgQIEAgJCIDQMaxCgAABAgRWAgJgJW0OAQIECBAICQiA0DGsQoAAAQIEVgICYCVtDgECBAgQCAkIgNAxrEKAAAECBFYCAmAlbQ4BAgQIEAgJCIDQMaxCgAABAgRWAgJgJW0OAQIECBAICQiA0DGsQoAAAQIEVgICYCVtDgECBAgQCAkIgNAxrEKAAAECBFYCAmAlbQ4BAgQIEAgJCIDQMaxCgAABAgRWAgJgJW0OAQIECBAICQiA0DGsQoAAAQIEVgICYCVtDgECBAgQCAkIgNAxrEKAAAECBFYCAmAlbQ4BAgQIEAgJCIDQMaxCgAABAgRWAgJgJW0OAQIECBAICQiA0DGsQoAAAQIEVgICYCVtDgECBAgQCAkIgNAxrEKAAAECBFYCAmAlbQ4BAgQIEAgJCIDQMaxCgAABAgRWAgJgJW0OAQIECBAICQiA0DGsQoAAAQIEVgICYCVtDgECBAgQCAkIgNAxrEKAAAECBFYCAmAlbQ4BAgQIEAgJCIDQMaxCgAABAgRWAgJgJW0OAQIECBAICQiA0DGsQoAAAQIEVgICYCVtDgECBAgQCAkIgNAxrEKAAAECBFYCAmAlbQ4BAgQIEAgJCIDQMaxCgAABAgRWAgJgJW0OAQIECBAICQiA0DGsQoAAAQIEVgICYCVtDgECBAgQCAkIgNAxrEKAAAECBFYCAmAlbQ4BAgQIEAgJCIDQMaxCgAABAgRWAgJgJW0OAQIECBAICQiA0DGsQoAAAQIEVgICYCVtDgECBAgQCAkIgNAxrEKAAAECBFYCAmAlbQ4BAgQIEAgJCIDQMaxCgAABAgRWAgJgJW0OAQIECBAICQiA0DGsQoAAAQIEVgICYCVtDgECBAgQCAkIgNAxrEKAAAECBFYCAmAlbQ4BAgQIEAgJCIDQMaxCgAABAgRWAgJgJW0OAQIECBAICQiA0DGsQoAAAQIEVgICYCVtDgECBAgQCAkIgNAxrEKAAAECBFYCAmAlbQ4BAgQIEAgJCIDQMaxCgAABAgRWAgJgJW0OAQIECBAICQiA0DGsQoAAAQIEVgICYCVtDgECBAgQCAkIgNAxrEKAAAECBFYCAmAlbQ4BAgQIEAgJCIDQMaxCgAABAgRWAgJgJW0OAQIECBAICQiA0DGsQoAAAQIEVgICYCVtDgECBAgQCAkIgNAxrEKAAAECBFYCAmAlbQ4BAgQIEAgJCIDQMaxCgAABAgRWAgJgJW0OAQIECBAICQiA0DGsQoAAAQIEVgICYCVtDgECBAgQCAkIgNAxrEKAAAECBFYCAmAlbQ4BAgQIEAgJCIDQMaxCgAABAgRWAgJgJW0OAQIECBAICQiA0DGsQoAAAQIEVgICYCVtDgECBAgQCAkIgNAxrEKAAAECBFYCAmAlbQ4BAgQIEAgJCIDQMaxCgAABAgRWAgJgJW0OAQIECBAICQiA0DGsQoAAAQIEVgICYCVtDgECBAgQCAkIgNAxrEKAAAECBFYCAmAlbQ4BAgQIEAgJCIDQMaxCgAABAgRWAgJgJW0OAQIECBAICQiA0DGsQoAAAQIEVgICYCVtDgECBAgQCAkIgNAxrEKAAAECBFYCAmAlbQ4BAgQIEAgJCIDQMaxCgAABAgRWAgJgJW0OAQIECBAICQiA0DGsQoAAAQIEVgICYCVtDgECBAgQCAkIgNAxrEKAAAECBFYCAmAlbQ4BAgQIEAgJCIDQMaxCgAABAgRWAgJgJW0OAQIECBAICQiA0DGsQoAAAQIEVgICYCVtDgECBAgQCAkIgNAxrEKAAAECBFYCAmAlbQ4BAgQIEAgJCIDQMaxCgAABAgRWAgJgJW0OAQIECBAICQiA0DGsQoAAAQIEVgICYCVtDgECBAgQCAkIgNAxrEKAAAECBFYCAmAlbQ4BAgQIEAgJCIDQMaxCgAABAgRWAgJgJW0OAQIECBAICQiA0DGsQoAAAQIEVgICYCVtDgECBAgQCAkIgNAxrEKAAAECBFYCAmAlbQ4BAgQIEAgJCIDQMaxCgAABAgRWAgJgJW0OAQIECBAICQiA0DGsQoAAAQIEVgICYCVtDgECBAgQCAkIgNAxrEKAAAECBFYCAmAlbQ4BAgQIEAgJCIDQMaxCgAABAgRWAgJgJW0OAQIECBAICQiA0DGsQoAAAQIEVgICYCVtDgECBAgQCAkIgNAxrEKAAAECBFYCAmAlbQ4BAgQIEAgJCIDQMaxCgAABAgRWAgJgJW0OAQIECBAICQiA0DGsQoAAAQIEVgICYCVtDgECBAgQCAkIgNAxrEKAAAECBFYCAmAlbQ4BAgQIEAgJCIDQMaxCgAABAgRWAgJgJW0OAQIECBAICQiA0DGsQoAAAQIEVgICYCVtDgECBAgQCAkIgNAxrEKAAAECBFYCAmAlbQ4BAgQIEAgJCIDQMaxCgAABAgRWAgJgJW0OAQIECBAICQiA0DGsQoAAAQIEVgICYCVtDgECBAgQCAkIgNAxrEKAAAECBFYCAmAlbQ4BAgQIEAgJCIDQMaxCgAABAgRWAgJgJW0OAQIECBAICQiA0DGsQoAAAQIEVgICYCVtDgECBAgQCAkIgNAxrEKAAAECBFYCAmAlbQ4BAgQIEAgJCIDQMaxCgAABAgRWAgJgJW0OAQIECBAICQiA0DGsQoAAAQIEVgICYCVtDgECBAgQCAkIgNAxrEKAAAECBFYCAmAlbQ4BAgQIEAgJCIDQMaxCgAABAgRWAgJgJW0OAQIECBAICQiA0DGsQoAAAQIEVgICYCVtDgECBAgQCAkIgNAxrEKAAAECBFYCAmAlbQ4BAgQIEAgJCIDQMaxCgAABAgRWAgJgJW0OAQIECBAICQiA0DGsQoAAAQIEVgICYCVtDgECBAgQCAkIgNAxrEKAAAECBFYCAmAlbQ4BAgQIEAgJCIDQMaxCgAABAgRWAgJgJW0OAQIECBAICQiA0DGsQoAAAQIEVgICYCVtDgECBAgQCAkIgNAxrEKAAAECBFYCAmAlbQ4BAgQIEAgJCIDQMaxCgAABAgRWAgJgJW0OAQIECBAICQiA0DGsQoAAAQIEVgICYCVtDgECBAgQCAkIgNAxrEKAAAECBFYCAmAlbQ4BAgQIEAgJCIDQMaxCgAABAgRWAgJgJW0OAQIECBAICQiA0DGsQoAAAQIEVgICYCVtDgECBAgQCAkIgNAxrEKAAAECBFYCAmAlbQ4BAgQIEAgJCIDQMaxCgAABAgRWAgJgJW0OAQIECBAICQiA0DGsQoAAAQIEVgICYCVtDgECBAgQCAkIgNAxrEKAAAECBFYCAmAlbQ4BAgQIEAgJCIDQMaxCgAABAgRWAgJgJW0OAQIECBAICQiA0DGsQoAAAQIEVgICYCVtDgECBAgQCAkIgNAxrEKAAAECBFYCAmAlbQ4BAgQIEAgJCIDQMaxCgAABAgRWAgJgJW0OAQIECBAICQiA0DGsQoAAAQIEVgICYCVtDgECBAgQCAkIgNAxrEKAAAECBFYCAmAlbQ4BAgQIEAgJCIDQMaxCgAABAgRWAgJgJW0OAQIECBAICQiA0DGsQoAAAQIEVgICYCVtDgECBAgQCAkIgNAxrEKAAAECBFYCAmAlbQ4BAgQIEAgJCIDQMaxCgAABAgRWAgJgJW0OAQIECBAICQiA0DGsQoAAAQIEVgICYCVtDgECBAgQCAkIgNAxrEKAAAECBFYCAmAlbQ4BAgQIEAgJCIDQMaxCgAABAgRWAgJgJW0OAQIECBAICQiA0DGsQoAAAQIEVgICYCVtDgECBAgQCAkIgNAxrEKAAAECBFYCAmAlbQ4BAgQIEAgJCIDQMaxCgAABAgRWAgJgJW0OAQIECBAICQiA0DGsQoAAAQIEVgICYCVtDgECBAgQCAkIgNAxrEKAAAECBFYCAmAlbQ4BAgQIEAgJCIDQMaxCgAABAgRWAgJgJW0OAQIECBAICQiA0DGsQoAAAQIEVgICYCVtDgECBAgQCAkIgNAxrEKAAAECBFYCAmAlbQ4BAgQIEAgJCIDQMaxCgAABAgRWAgJgJW0OAQIECBAICQiA0DGsQoAAAQIEVgICYCVtDgECBAgQCAkIgNAxrEKAAAECBFYCAmAlbQ4BAgQIEAgJCIDQMaxCgAABAgRWAgJgJW0OAQIECBAICQiA0DGsQoAAAQIEVgICYCVtDgECBAgQCAkIgNAxrEKAAAECBFYCAmAlbQ4BAgQIEAgJCIDQMaxCgAABAgRWAgJgJW0OAQIECBAICQiA0DGsQoAAAQIEVgICYCVtDgECBAgQCAkIgNAxrEKAAAECBFYCAmAlbQ4BAgQIEAgJCIDQMaxCgAABAgRWAgJgJW0OAQIECBAICQiA0DGsQoAAAQIEVgICYCVtDgECBAgQCAkIgNAxrEKAAAECBFYCAmAlbQ4BAgQIEAgJCIDQMaxCgAABAgRWAgJgJW0OAQIECBAICQiA0DGsQoAAAQIEVgICYCVtDgECBAgQCAkIgNAxrEKAAAECBFYCAmAlbQ4BAgQIEAgJCIDQMaxCgAABAgRWAgJgJW0OAQIECBAICQiA0DGsQoAAAQIEVgICYCVtDgECBAgQCAkIgNAxrEKAAAECBFYCAmAlbQ4BAgQIEAgJCIDQMaxCgAABAgRWAgJgJW0OAQIECBAICQiA0DGsQoAAAQIEVgICYCVtDgECBAgQCAkIgNAxrEKAAAECBFYCAmAlbQ4BAgQIEAgJCIDQMaxCgAABAgRWAgJgJW0OAQIECBAICQiA0DGsQoAAAQIEVgICYCVtDgECBAgQCAkIgNAxrEKAAAECBFYCAmAlbQ4BAgQIEAgJCIDQMaxCgAABAgRWAgJgJW0OAQIECBAICQiA0DGsQoAAAQIEVgICYCVtDgECBAgQCAkIgNAxrEKAAAECBFYCAmAlbQ4BAgQIEAgJCIDQMaxCgAABAgRWAgJgJW0OAQIECBAICQiA0DGsQoAAAQIEVgICYCVtDgECBAgQCAkIgNAxrEKAAAECBFYCAmAlbQ4BAgQIEAgJCIDQMaxCgAABAgRWAgJgJW0OAQIECBAICQiA0DGsQoAAAQIEVgICYCVtDgECBAgQCAkIgNAxrEKAAAECBFYCAmAlbQ4BAgQIEAgJCIDQMaxCgAABAgRWAgJgJW0OAQIECBAICQiA0DGsQoAAAQIEVgICYCVtDgECBAgQCAkIgNAxrEKAAAECBFYCAmAlbQ4BAgQIEAgJCIDQMaxCgAABAgRWAgJgJW0OAQIECBAICQiA0DGsQoAAAQIEVgICYCVtDgECBAgQCAkIgNAxrEKAAAECBFYCAmAlbQ4BAgQIEAgJCIDQMaxCgAABAgRWAgJgJW0OAQIECBAICQiA0DGsQoAAAQIEVgICYCVtDgECBAgQCAkIgNAxrEKAAAECBFYCAmAlbQ4BAgQIEAgJCIDQMaxCgAABAgRWAgJgJW0OAQIECBAICQiA0DGsQoAAAQIEVgICYCVtDgECBAgQCAkIgNAxrEKAAAECBFYCAmAlbQ4BAgQIEAgJCIDQMaxCgAABAgRWAgJgJW0OAQIECBAICQiA0DGsQoAAAQIEVgICYCVtDgECBAgQCAkIgNAxrEKAAAECBFYCAmAlbQ4BAgQIEAgJCIDQMaxCgAABAgRWAgJgJW0OAQIECBAICQiA0DGsQoAAAQIEVgICYCVtDgECBAgQCAkIgNAxrEKAAAECBFYCAmAlbQ4BAgQIEAgJCIDQMaxCgAABAgRWAgJgJW0OAQIECBAICQiA0DGsQoAAAQIEVgICYCVtDgECBAgQCAkIgNAxrEKAAAECBFYCAmAlbQ4BAgQIEAgJCIDQMaxCgAABAgRWAgJgJW0OAQIECBAICQiA0DGsQoAAAQIEVgICYCVtDgECBAgQCAkIgNAxrEKAAAECBFYCAmAlbQ4BAgQIEAgJCIDQMaxCgAABAgRWAgJgJW0OAQIECBAICQiA0DGsQoAAAQIEVgICYCVtDgECBAgQCAkIgNAxrEKAAAECBFYCAmAlbQ4BAgQIEAgJCIDQMaxCgAABAgRWAgJgJW0OAQIECBAICQiA0DGsQoAAAQIEVgI/AUWUdxDy8IBGAAAAAElFTkSuQmCC"}]}
+1
assets/models/TestBlock.bbmodel
··· 1 + {"meta":{"format_version":"4.10","model_format":"free","box_uv":false},"name":"TestBlock","model_identifier":"","visible_box":[1,1,0],"variable_placeholders":"","variable_placeholder_buttons":[],"timeline_setups":[],"unhandled_root_fields":{},"resolution":{"width":16,"height":16},"elements":[{"name":"cube","box_uv":false,"rescale":false,"locked":false,"light_emission":0,"render_order":"default","allow_mirror_modeling":true,"from":[-8,8,-8],"to":[8,16,0],"autouv":0,"color":7,"origin":[-7,8,-7],"faces":{"north":{"uv":[0,0,16,8],"texture":0},"east":{"uv":[0,0,8,8],"texture":0},"south":{"uv":[0,0,16,8],"texture":0},"west":{"uv":[0,0,8,8],"texture":0},"up":{"uv":[0,0,16,8],"texture":0},"down":{"uv":[0,0,16,8],"texture":0}},"type":"cube","uuid":"dbda9d1d-6a36-615b-3568-2b5de7908e9c"},{"name":"cube","box_uv":false,"rescale":false,"locked":false,"light_emission":0,"render_order":"default","allow_mirror_modeling":true,"from":[-8,0,-8],"to":[8,8,8],"autouv":0,"color":7,"origin":[-7,0,-7],"faces":{"north":{"uv":[0,0,16,8],"texture":0},"east":{"uv":[0,0,16,8],"texture":0},"south":{"uv":[0,0,16,8],"texture":0},"west":{"uv":[0,0,16,8],"texture":0},"up":{"uv":[0,0,16,16],"texture":0},"down":{"uv":[0,0,16,16],"texture":0}},"type":"cube","uuid":"ff6a5403-b767-29e7-bee2-17f28f400f22"}],"outliner":["ff6a5403-b767-29e7-bee2-17f28f400f22","dbda9d1d-6a36-615b-3568-2b5de7908e9c"],"textures":[{"path":"D:\\Projects2025\\Coding\\C#\\kestrel\\assets\\textures\\atlas.png","name":"atlas.png","folder":"","namespace":"","id":"0","group":"","width":512,"height":512,"uv_width":512,"uv_height":512,"particle":false,"use_as_default":false,"layers_enabled":false,"sync_to_project":"","render_mode":"default","render_sides":"auto","pbr_channel":"color","frame_time":1,"frame_order_type":"loop","frame_order":"","frame_interpolate":false,"visible":true,"internal":true,"saved":true,"uuid":"8e2615d1-d87a-a688-45ce-bc56464212e7","relative_path":"../textures/atlas.png","source":"data:image/png;base64,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"}]}
+4
assets/models/TestBlock.mtl
··· 1 + # Made in Blockbench 4.12.5 2 + newmtl m_8e2615d1-d87a-a688-45ce-bc56464212e7 3 + map_Kd atlas.png 4 + newmtl none
assets/textures/atlas.png

This is a binary file and will not be displayed.