diff --git a/Svelto.ECS/Extensions/Svelto/EntityCollectionExtension.cs b/Svelto.ECS/Extensions/Svelto/EntityCollectionExtension.cs index 17851d4..465e6ca 100644 --- a/Svelto.ECS/Extensions/Svelto/EntityCollectionExtension.cs +++ b/Svelto.ECS/Extensions/Svelto/EntityCollectionExtension.cs @@ -68,13 +68,21 @@ namespace Svelto.ECS buffer = ec._managedBuffer; count = (int) ec.count; } - + [MethodImpl(MethodImplOptions.AggressiveInlining)] public static BT> ToBuffer(in this EntityCollection ec) where T1 : struct, IEntityViewComponent { return new BT>(ec._managedBuffer, ec.count); } - + + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static void Deconstruct(in this EntityCollection ec, out MB buffer1, out MB buffer2, out int count) where T1 : struct, IEntityViewComponent + where T2 : struct, IEntityViewComponent + { + buffer1 = ec.Item1._managedBuffer; + buffer2 = ec.Item2._managedBuffer; + count = (int) ec.count; + } [MethodImpl(MethodImplOptions.AggressiveInlining)] public static (MB buffer1, MB buffer2, uint count) ToBuffers @@ -84,6 +92,17 @@ namespace Svelto.ECS return (ec.Item1._managedBuffer, ec.Item2._managedBuffer, ec.count); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static void Deconstruct(in this EntityCollection ec, out MB buffer1, out MB buffer2, out MB buffer3, out int count) where T1 : struct, IEntityViewComponent + where T2 : struct, IEntityViewComponent + where T3 : struct, IEntityViewComponent + { + buffer1 = ec.Item1._managedBuffer; + buffer2 = ec.Item2._managedBuffer; + buffer3 = ec.Item3._managedBuffer; + count = (int) ec.count; + } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public static (MB buffer1, MB buffer2, MB buffer3, uint count) ToBuffers (in this EntityCollection ec)