|
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458 |
- using System.Runtime.CompilerServices;
- using Svelto.DataStructures;
- using Svelto.ECS.Hybrid;
- using Svelto.ECS.Internal;
-
- 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
- {
- if (ec._buffer == null) //I cannot test 0, as buffer can be valid and processed by removeEx with count 0
- {
- buffer = default;
- count = 0;
- return;
- }
-
- buffer = (NB<T1>)ec._buffer;
- count = (int)ec.count;
- }
-
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- public static void Deconstruct<T1>(in this EntityCollection<T1> ec, out NB<T1> buffer,
- out NativeEntityIDs entityIDs, out int count)
- where T1 : unmanaged, IEntityComponent
- {
- if (ec._buffer == null) //I cannot test 0, as buffer can be valid and processed by removeEx with count 0
- {
- buffer = default;
- count = 0;
- entityIDs = default;
- return;
- }
-
- buffer = (NB<T1>)ec._buffer;
- count = (int)ec.count;
- entityIDs = (NativeEntityIDs)ec._entityIDs;
- }
-
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- public static void Deconstruct<T1, T2>(in this EntityCollection<T1, T2> ec, out NB<T1> buffer1,
- out NB<T2> buffer2, out NativeEntityIDs entityIDs, out int count)
- where T1 : unmanaged, IEntityComponent
- where T2 : unmanaged, IEntityComponent
- {
- if (ec.buffer1._buffer
- == null) //I cannot test 0, as buffer can be valid and processed by removeEx with count 0
- {
- buffer1 = default;
- buffer2 = default;
- count = 0;
- entityIDs = default;
- return;
- }
-
- buffer1 = (NB<T1>)ec.buffer1._buffer;
- buffer2 = (NB<T2>)ec.buffer2._buffer;
- count = ec.count;
- entityIDs = (NativeEntityIDs)ec.buffer1._entityIDs;
- }
-
- [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
- {
- if (ec.buffer1._buffer
- == null) //I cannot test 0, as buffer can be valid and processed by removeEx with count 0
- {
- buffer1 = default;
- buffer2 = default;
- count = 0;
- return;
- }
-
- buffer1 = (NB<T1>)ec.buffer1._buffer;
- buffer2 = (NB<T2>)ec.buffer2._buffer;
- 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
- {
- if (ec.buffer1._buffer
- == null) //I cannot test 0, as buffer can be valid and processed by removeEx with count 0
- {
- buffer1 = default;
- buffer2 = default;
- buffer3 = default;
- count = 0;
- return;
- }
-
- buffer1 = (NB<T1>)ec.buffer1._buffer;
- buffer2 = (NB<T2>)ec.buffer2._buffer;
- buffer3 = (NB<T3>)ec.buffer3._buffer;
- 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 NativeEntityIDs entityIDs, out int count)
- where T1 : unmanaged, IEntityComponent
- where T2 : unmanaged, IEntityComponent
- where T3 : unmanaged, IEntityComponent
- {
- if (ec.buffer1._buffer
- == null) //I cannot test 0, as buffer can be valid and processed by removeEx with count 0
- {
- buffer1 = default;
- buffer2 = default;
- buffer3 = default;
- count = 0;
- entityIDs = default;
- return;
- }
-
- buffer1 = (NB<T1>)ec.buffer1._buffer;
- buffer2 = (NB<T2>)ec.buffer2._buffer;
- buffer3 = (NB<T3>)ec.buffer3._buffer;
- count = (int)ec.count;
- entityIDs = (NativeEntityIDs)ec.buffer1._entityIDs;
- }
-
- [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
- {
- if (ec.buffer1._buffer
- == null) //I cannot test 0, as buffer can be valid and processed by removeEx with count 0
- {
- buffer1 = default;
- buffer2 = default;
- buffer3 = default;
- buffer4 = default;
- count = 0;
- return;
- }
-
- buffer1 = (NB<T1>)ec.buffer1._buffer;
- buffer2 = (NB<T2>)ec.buffer2._buffer;
- buffer3 = (NB<T3>)ec.buffer3._buffer;
- buffer4 = (NB<T4>)ec.buffer4._buffer;
- 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 NativeEntityIDs entityIDs, out int count)
- where T1 : unmanaged, IEntityComponent
- where T2 : unmanaged, IEntityComponent
- where T3 : unmanaged, IEntityComponent
- where T4 : unmanaged, IEntityComponent
- {
- if (ec.buffer1._buffer
- == null) //I cannot test 0, as buffer can be valid and processed by removeEx with count 0
- {
- buffer1 = default;
- buffer2 = default;
- buffer3 = default;
- buffer4 = default;
- count = 0;
- entityIDs = default;
- return;
- }
-
- buffer1 = (NB<T1>)ec.buffer1._buffer;
- buffer2 = (NB<T2>)ec.buffer2._buffer;
- buffer3 = (NB<T3>)ec.buffer3._buffer;
- buffer4 = (NB<T4>)ec.buffer4._buffer;
- entityIDs = (NativeEntityIDs)ec.buffer1._entityIDs;
- count = (int)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
- {
- if (ec._buffer == null) //I cannot test 0, as buffer can be valid and processed by removeEx with count 0
- {
- buffer = default;
- count = 0;
- return;
- }
-
- buffer = (MB<T1>)ec._buffer;
- count = (int)ec.count;
- }
-
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- public static void Deconstruct<T1>(in this EntityCollection<T1> ec, out MB<T1> buffer,
- out ManagedEntityIDs entityIDs, out int count)
- where T1 : struct, IEntityViewComponent
- {
- if (ec._buffer == null) //I cannot test 0, as buffer can be valid and processed by removeEx with count 0
- {
- buffer = default;
- count = 0;
- entityIDs = default;
- return;
- }
-
- buffer = (MB<T1>)ec._buffer;
- count = (int)ec.count;
- entityIDs = (ManagedEntityIDs)ec._entityIDs;
- }
-
- [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
- {
- if (ec.buffer1._buffer
- == null) //I cannot test 0, as buffer can be valid and processed by removeEx with count 0
- {
- buffer1 = default;
- buffer2 = default;
- count = 0;
- return;
- }
-
- buffer1 = (MB<T1>)ec.buffer1._buffer;
- buffer2 = (MB<T2>)ec.buffer2._buffer;
- count = (int)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 ManagedEntityIDs entityIDs, out int count)
- where T1 : struct, IEntityViewComponent
- where T2 : struct, IEntityViewComponent
- {
- if (ec.buffer1._buffer
- == null) //I cannot test 0, as buffer can be valid and processed by removeEx with count 0
- {
- buffer1 = default;
- buffer2 = default;
- count = 0;
- entityIDs = default;
- return;
- }
-
- buffer1 = (MB<T1>)ec.buffer1._buffer;
- buffer2 = (MB<T2>)ec.buffer2._buffer;
- count = (int)ec.count;
- entityIDs = (ManagedEntityIDs)ec.buffer1._entityIDs;
- }
-
- [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
- {
- if (ec.buffer1._buffer
- == null) //I cannot test 0, as buffer can be valid and processed by removeEx with count 0
- {
- buffer1 = default;
- buffer2 = default;
- buffer3 = default;
- count = 0;
- return;
- }
-
- buffer1 = (MB<T1>)ec.buffer1._buffer;
- buffer2 = (MB<T2>)ec.buffer2._buffer;
- buffer3 = (MB<T3>)ec.buffer3._buffer;
- count = (int)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 ManagedEntityIDs entityIDs, out int count)
- where T1 : struct, IEntityViewComponent
- where T2 : struct, IEntityViewComponent
- where T3 : struct, IEntityViewComponent
- {
- if (ec.buffer1._buffer
- == null) //I cannot test 0, as buffer can be valid and processed by removeEx with count 0
- {
- buffer1 = default;
- buffer2 = default;
- buffer3 = default;
- entityIDs = default;
- count = 0;
- return;
- }
-
- buffer1 = (MB<T1>)ec.buffer1._buffer;
- buffer2 = (MB<T2>)ec.buffer2._buffer;
- buffer3 = (MB<T3>)ec.buffer3._buffer;
- count = (int)ec.count;
- entityIDs = (ManagedEntityIDs)ec.buffer1._entityIDs;
- }
- }
-
- public static class EntityCollectionExtensionC
- {
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- public static void Deconstruct<T1, T2>(in this EntityCollection<T1, T2> ec, out NB<T1> buffer1,
- out MB<T2> buffer2, out ManagedEntityIDs entityIDs, out int count)
- where T1 : unmanaged, IEntityComponent
- where T2 : struct, IEntityViewComponent
- {
- if (ec.buffer1._buffer
- == null) //I cannot test 0, as buffer can be valid and processed by removeEx with count 0
- {
- buffer1 = default;
- buffer2 = default;
- count = 0;
- return;
- }
-
- buffer1 = (NB<T1>)ec.buffer1._buffer;
- buffer2 = (MB<T2>)ec.buffer2._buffer;
- count = (int)ec.count;
- entityIDs = (ManagedEntityIDs)ec.buffer2._entityIDs;
- }
-
- [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
- {
- if (ec.buffer1._buffer
- == null) //I cannot test 0, as buffer can be valid and processed by removeEx with count 0
- {
- buffer1 = default;
- buffer2 = default;
- count = 0;
- return;
- }
-
- buffer1 = (NB<T1>)ec.buffer1._buffer;
- buffer2 = (MB<T2>)ec.buffer2._buffer;
- 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
- {
- if (ec.buffer1._buffer
- == null) //I cannot test 0, as buffer can be valid and processed by removeEx with count 0
- {
- buffer1 = default;
- buffer2 = default;
- buffer3 = default;
- count = 0;
- return;
- }
-
- buffer1 = (NB<T1>)ec.buffer1._buffer;
- buffer2 = (MB<T2>)ec.buffer2._buffer;
- buffer3 = (MB<T3>)ec.buffer3._buffer;
- 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
- {
- if (ec.buffer1._buffer
- == null) //I cannot test 0, as buffer can be valid and processed by removeEx with count 0
- {
- buffer1 = default;
- buffer2 = default;
- buffer3 = default;
- buffer4 = default;
- count = 0;
- return;
- }
-
- buffer1 = (NB<T1>)ec.buffer1._buffer;
- buffer2 = (NB<T2>)ec.buffer2._buffer;
- buffer3 = (NB<T3>)ec.buffer3._buffer;
- buffer4 = (MB<T4>)ec.buffer4._buffer;
- 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
- {
- if (ec.buffer1._buffer
- == null) //I cannot test 0, as buffer can be valid and processed by removeEx with count 0
- {
- buffer1 = default;
- buffer2 = default;
- buffer3 = default;
- count = 0;
- return;
- }
-
- buffer1 = (NB<T1>)ec.buffer1._buffer;
- buffer2 = (NB<T2>)ec.buffer2._buffer;
- buffer3 = (MB<T3>)ec.buffer3._buffer;
- 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 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
- {
- if (ec.buffer1._buffer
- == null) //I cannot test 0, as buffer can be valid and processed by removeEx with count 0
- {
- buffer1 = default;
- buffer2 = default;
- buffer3 = default;
- buffer4 = default;
- count = 0;
- return;
- }
-
- buffer1 = (NB<T1>)ec.buffer1._buffer;
- buffer2 = (NB<T2>)ec.buffer2._buffer;
- buffer3 = (MB<T3>)ec.buffer3._buffer;
- buffer4 = (MB<T4>)ec.buffer4._buffer;
- count = (int)ec.count;
- }
- }
- }
|