|
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251 |
- using System;
- using System.Runtime.CompilerServices;
- using Svelto.DataStructures;
- using Svelto.ECS.Hybrid;
-
- namespace Svelto.ECS
- {
- public static class EntityCollectionExtension
- {
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- public static void Deconstruct<T1>
- (in this EntityCollection<T1> ec, out NB<T1> buffer, out int count) where T1 : unmanaged, IEntityComponent
- {
- buffer = ec._nativedBuffer;
- count = (int) ec.count;
- }
-
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- public static void Deconstruct<T1, T2>
- (in this EntityCollection<T1, T2> ec, out NB<T1> buffer1, out NB<T2> buffer2, out int count)
- where T1 : unmanaged, IEntityComponent where T2 : unmanaged, IEntityComponent
- {
- buffer1 = ec.buffer1._nativedBuffer;
- buffer2 = ec.buffer2._nativedBuffer;
- count = (int) ec.count;
- }
-
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- public static void Deconstruct<T1, T2, T3>
- (in this EntityCollection<T1, T2, T3> ec, out NB<T1> buffer1, out NB<T2> buffer2, out NB<T3> buffer3
- , out int count) where T1 : unmanaged, IEntityComponent
- where T2 : unmanaged, IEntityComponent
- where T3 : unmanaged, IEntityComponent
- {
- buffer1 = ec.buffer1._nativedBuffer;
- buffer2 = ec.buffer2._nativedBuffer;
- buffer3 = ec.buffer3._nativedBuffer;
- count = (int) ec.count;
- }
-
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- public static void Deconstruct<T1, T2, T3, T4>
- (in this EntityCollection<T1, T2, T3, T4> ec, out NB<T1> buffer1, out NB<T2> buffer2, out NB<T3> buffer3
- , out NB<T4> buffer4, out int count) where T1 : unmanaged, IEntityComponent
- where T2 : unmanaged, IEntityComponent
- where T3 : unmanaged, IEntityComponent
- where T4 : unmanaged, IEntityComponent
- {
- buffer1 = ec.Item1._nativedBuffer;
- buffer2 = ec.Item2._nativedBuffer;
- buffer3 = ec.Item3._nativedBuffer;
- buffer4 = ec.Item4._nativedBuffer;
- count = (int) ec.count;
- }
-
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- public static BT<NB<T1>> ToBuffer<T1>(in this EntityCollection<T1> ec) where T1 : unmanaged, IEntityComponent
- {
- return new BT<NB<T1>>(ec._nativedBuffer, ec.count);
- }
-
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- public static BT<NB<T1>, NB<T2>> ToBuffers<T1, T2>
- (in this EntityCollection<T1, T2> ec)
- where T2 : unmanaged, IEntityComponent where T1 : unmanaged, IEntityComponent
- {
- return new BT<NB<T1>, NB<T2>>(ec.buffer1._nativedBuffer, ec.buffer2._nativedBuffer, ec.count);
- }
-
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- public static BT<NB<T1>, NB<T2>, NB<T3>> ToBuffers<T1, T2, T3>
- (in this EntityCollection<T1, T2, T3> ec)
- where T2 : unmanaged, IEntityComponent
- where T1 : unmanaged, IEntityComponent
- where T3 : unmanaged, IEntityComponent
- {
- return new BT<NB<T1>, NB<T2>, NB<T3>>(ec.buffer1._nativedBuffer, ec.buffer2._nativedBuffer
- , ec.buffer3._nativedBuffer, ec.count);
- }
- }
-
- public static class EntityCollectionExtensionB
- {
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- public static void Deconstruct<T1>
- (in this EntityCollection<T1> ec, out MB<T1> buffer, out int count) where T1 : struct, IEntityViewComponent
- {
- buffer = ec._managedBuffer;
- count = (int) ec.count;
- }
-
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- public static BT<MB<T1>> ToBuffer<T1>(in this EntityCollection<T1> ec) where T1 : struct, IEntityViewComponent
- {
- return new BT<MB<T1>>(ec._managedBuffer, ec.count);
- }
-
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- public static void Deconstruct<T1, T2>
- (in this EntityCollection<T1, T2> ec, out MB<T1> buffer1, out MB<T2> buffer2, out int count)
- where T1 : struct, IEntityViewComponent where T2 : struct, IEntityViewComponent
- {
- buffer1 = ec.buffer1._managedBuffer;
- buffer2 = ec.buffer2._managedBuffer;
- count = (int) ec.count;
- }
-
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- public static (MB<T1> buffer1, MB<T2> buffer2, uint count) ToBuffers<T1, T2>
- (in this EntityCollection<T1, T2> ec)
- where T2 : struct, IEntityViewComponent where T1 : struct, IEntityViewComponent
- {
- return (ec.buffer1._managedBuffer, ec.buffer2._managedBuffer, ec.count);
- }
-
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- public static void Deconstruct<T1, T2, T3>
- (in this EntityCollection<T1, T2, T3> ec, out MB<T1> buffer1, out MB<T2> buffer2, out MB<T3> buffer3
- , out int count) where T1 : struct, IEntityViewComponent
- where T2 : struct, IEntityViewComponent
- where T3 : struct, IEntityViewComponent
- {
- buffer1 = ec.buffer1._managedBuffer;
- buffer2 = ec.buffer2._managedBuffer;
- buffer3 = ec.buffer3._managedBuffer;
- count = (int) ec.count;
- }
-
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- public static (MB<T1> buffer1, MB<T2> buffer2, MB<T3> buffer3, uint count) ToBuffers<T1, T2, T3>
- (in this EntityCollection<T1, T2, T3> ec)
- where T2 : struct, IEntityViewComponent
- where T1 : struct, IEntityViewComponent
- where T3 : struct, IEntityViewComponent
- {
- return (ec.buffer1._managedBuffer, ec.buffer2._managedBuffer, ec.buffer3._managedBuffer, ec.count);
- }
- }
-
- public static class EntityCollectionExtensionC
- {
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- public static (NB<T1> buffer1, MB<T2> buffer2, uint count) ToBuffers<T1, T2>
- (in this EntityCollection<T1, T2> ec)
- where T1 : unmanaged, IEntityComponent where T2 : struct, IEntityViewComponent
- {
- return (ec.buffer1._nativedBuffer, ec.buffer2._managedBuffer, ec.count);
- }
-
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- public static (NB<T1> buffer1, MB<T2> buffer2, MB<T3> buffer3, uint count) ToBuffers<T1, T2, T3>
- (in this EntityCollection<T1, T2, T3> ec)
- where T1 : unmanaged, IEntityComponent
- where T2 : struct, IEntityViewComponent
- where T3 : struct, IEntityViewComponent
- {
- return (ec.buffer1._nativedBuffer, ec.buffer2._managedBuffer, ec.buffer3._managedBuffer, ec.count);
- }
-
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- public static void Deconstruct<T1, T2>
- (in this EntityCollection<T1, T2> ec, out NB<T1> buffer1, out MB<T2> buffer2, out int count)
- where T1 : unmanaged, IEntityComponent where T2 : struct, IEntityViewComponent
- {
- buffer1 = ec.buffer1._nativedBuffer;
- buffer2 = ec.buffer2._managedBuffer;
- count = (int) ec.count;
- }
-
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- public static void Deconstruct<T1, T2, T3>
- (in this EntityCollection<T1, T2, T3> ec, out NB<T1> buffer1, out MB<T2> buffer2, out MB<T3> buffer3, out int count)
- where T1 : unmanaged, IEntityComponent
- where T2 : struct, IEntityViewComponent
- where T3 : struct, IEntityViewComponent
- {
- buffer1 = ec.buffer1._nativedBuffer;
- buffer2 = ec.buffer2._managedBuffer;
- buffer3 = ec.buffer3._managedBuffer;
- count = (int) ec.count;
- }
-
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- public static void Deconstruct<T1, T2, T3, T4>
- (in this EntityCollection<T1, T2, T3, T4> ec, out NB<T1> buffer1, out NB<T2> buffer2, out NB<T3> buffer3
- , out MB<T4> buffer4, out int count) where T1 : unmanaged, IEntityComponent
- where T2 : unmanaged, IEntityComponent
- where T3 : unmanaged, IEntityComponent
- where T4 : struct, IEntityViewComponent
- {
- buffer1 = ec.Item1._nativedBuffer;
- buffer2 = ec.Item2._nativedBuffer;
- buffer3 = ec.Item3._nativedBuffer;
- buffer4 = ec.Item4._managedBuffer;
- count = (int) ec.count;
- }
- }
-
- public static class EntityCollectionExtensionD
- {
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- public static void Deconstruct<T1, T2, T3>
- (in this EntityCollection<T1, T2, T3> ec, out NB<T1> buffer1, out NB<T2> buffer2, out MB<T3> buffer3
- , out int count) where T1 : unmanaged, IEntityComponent
- where T2 : unmanaged, IEntityComponent
- where T3 : struct, IEntityViewComponent
- {
- buffer1 = ec.buffer1._nativedBuffer;
- buffer2 = ec.buffer2._nativedBuffer;
- buffer3 = ec.buffer3._managedBuffer;
- count = (int) ec.count;
- }
-
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- public static (NB<T1> buffer1, NB<T2> buffer2, MB<T3> buffer3, uint count) ToBuffers<T1, T2, T3>
- (in this EntityCollection<T1, T2, T3> ec)
- where T1 : unmanaged, IEntityComponent
- where T2 : unmanaged, IEntityComponent
- where T3 : struct, IEntityViewComponent
- {
- return (ec.buffer1._nativedBuffer, ec.buffer2._nativedBuffer, ec.buffer3._managedBuffer, ec.count);
- }
-
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- public static BT<NB<T1>, NB<T2>, NB<T3>, NB<T4>> ToBuffers<T1, T2, T3, T4>
- (in this EntityCollection<T1, T2, T3, T4> ec)
- where T2 : unmanaged, IEntityComponent
- where T1 : unmanaged, IEntityComponent
- where T3 : unmanaged, IEntityComponent
- where T4 : unmanaged, IEntityComponent
- {
- return new BT<NB<T1>, NB<T2>, NB<T3>, NB<T4>>(ec.Item1._nativedBuffer, ec.Item2._nativedBuffer
- , ec.Item3._nativedBuffer, ec.Item4._nativedBuffer, ec.count);
- }
-
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- public static void Deconstruct<T1, T2, T3, T4>
- (in this EntityCollection<T1, T2, T3, T4> ec, out NB<T1> buffer1, out NB<T2> buffer2, out MB<T3> buffer3
- , out MB<T4> buffer4, out int count) where T1 : unmanaged, IEntityComponent
- where T2 : unmanaged, IEntityComponent
- where T3 : struct, IEntityViewComponent
- where T4 : struct, IEntityViewComponent
- {
- buffer1 = ec.Item1._nativedBuffer;
- buffer2 = ec.Item2._nativedBuffer;
- buffer3 = ec.Item3._managedBuffer;
- buffer4 = ec.Item4._managedBuffer;
- count = (int) ec.count;
- }
- }
- }
|