From a61e9a3aaa7803600f3ee9c5c418d10c3c9c5ca0 Mon Sep 17 00:00:00 2001 From: Jose Luis Rey Mendez Date: Mon, 20 Jul 2020 11:55:28 -0300 Subject: [PATCH 1/2] Added deconstruct methods to EntityCollections for multiple managed buffers --- .../Svelto/EntityCollectionExtension.cs | 23 +++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) 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) From ad4e9e8d9872e10b61825822de083263db6ca471 Mon Sep 17 00:00:00 2001 From: Jose Luis Rey Mendez Date: Mon, 20 Jul 2020 11:59:11 -0300 Subject: [PATCH 2/2] Fix whitespace usage in deconstruct method --- Svelto.ECS/Extensions/Svelto/EntityCollectionExtension.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Svelto.ECS/Extensions/Svelto/EntityCollectionExtension.cs b/Svelto.ECS/Extensions/Svelto/EntityCollectionExtension.cs index 465e6ca..9b8eaf7 100644 --- a/Svelto.ECS/Extensions/Svelto/EntityCollectionExtension.cs +++ b/Svelto.ECS/Extensions/Svelto/EntityCollectionExtension.cs @@ -94,8 +94,8 @@ namespace Svelto.ECS [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 + where T2 : struct, IEntityViewComponent + where T3 : struct, IEntityViewComponent { buffer1 = ec.Item1._managedBuffer; buffer2 = ec.Item2._managedBuffer;