lyra-wasm-scripting-test/guests/csharp/dotnet-guest-test/LyraApi/Ecs/ViewResult.cs

32 lines
813 B
C#

using System.Runtime.InteropServices.Swift;
using ExampleWorld.wit.imports.lyra.api;
namespace LyraApi.Ecs;
public class ViewResult
{
private List<Component> components;
private IEcs.EcsDynamicView inner;
internal ViewResult(List<Component> components, IEcs.EcsDynamicView inner)
{
this.components = components;
this.inner = inner;
}
public IEnumerable<(Entity, T1)> Get<T1>() where T1 : IComponent
{
(IEcs.Entity, byte[])? row = inner.Next();
if (row is (var entity, byte[] bytes))
{
byte[] compBytes = bytes.Take((int)T1.HostSize).ToArray();
var t1 = (T1?)T1.TakeFromBytes(compBytes);
if (t1 != null)
{
yield return (new Entity(entity), t1);
}
}
}
}