mirror of
https://github.com/DCFApixels/DragonECS.git
synced 2025-09-17 17:34:36 +08:00
cleanup reflection
This commit is contained in:
parent
dc51ae758b
commit
dbdc34f3cf
@ -6,23 +6,14 @@ namespace DCFApixels.DragonECS
|
||||
|
||||
public sealed class SingleAspect<TPool> : EcsAspect where TPool : IEcsPoolImplementation, new()
|
||||
{
|
||||
public readonly TPool pool;
|
||||
public SingleAspect(Builder b)
|
||||
{
|
||||
pool = b.IncludePool<TPool>();
|
||||
}
|
||||
public readonly TPool pool = CurrentBuilder.IncludePool<TPool>();
|
||||
}
|
||||
public sealed class CombinedAspect<A0, A1> : EcsAspect
|
||||
where A0 : EcsAspect
|
||||
where A1 : EcsAspect
|
||||
where A0 : EcsAspect, new()
|
||||
where A1 : EcsAspect, new()
|
||||
{
|
||||
public readonly A0 a0;
|
||||
public readonly A1 a1;
|
||||
public CombinedAspect(Builder b)
|
||||
{
|
||||
a0 = b.Combine<A0>(0);
|
||||
a1 = b.Combine<A1>(1);
|
||||
}
|
||||
public readonly A0 a0 = CurrentBuilder.Combine<A0>();
|
||||
public readonly A1 a1 = CurrentBuilder.Combine<A1>();
|
||||
public void Deconstruct(out A0 a0, out A1 a1)
|
||||
{
|
||||
a0 = this.a0;
|
||||
@ -31,19 +22,13 @@ namespace DCFApixels.DragonECS
|
||||
}
|
||||
|
||||
public sealed class CombinedAspect<A0, A1, A2> : EcsAspect
|
||||
where A0 : EcsAspect
|
||||
where A1 : EcsAspect
|
||||
where A2 : EcsAspect
|
||||
where A0 : EcsAspect, new()
|
||||
where A1 : EcsAspect, new()
|
||||
where A2 : EcsAspect, new()
|
||||
{
|
||||
public readonly A0 a0;
|
||||
public readonly A1 a1;
|
||||
public readonly A2 a2;
|
||||
public CombinedAspect(Builder b)
|
||||
{
|
||||
a0 = b.Combine<A0>(0);
|
||||
a1 = b.Combine<A1>(1);
|
||||
a2 = b.Combine<A2>(2);
|
||||
}
|
||||
public readonly A0 a0 = CurrentBuilder.Combine<A0>();
|
||||
public readonly A1 a1 = CurrentBuilder.Combine<A1>();
|
||||
public readonly A2 a2 = CurrentBuilder.Combine<A2>();
|
||||
public void Deconstruct(out A0 a0, out A1 a1, out A2 a2)
|
||||
{
|
||||
a0 = this.a0;
|
||||
@ -53,22 +38,15 @@ namespace DCFApixels.DragonECS
|
||||
}
|
||||
|
||||
public sealed class CombinedAspect<A0, A1, A2, A3> : EcsAspect
|
||||
where A0 : EcsAspect
|
||||
where A1 : EcsAspect
|
||||
where A2 : EcsAspect
|
||||
where A3 : EcsAspect
|
||||
where A0 : EcsAspect, new()
|
||||
where A1 : EcsAspect, new()
|
||||
where A2 : EcsAspect, new()
|
||||
where A3 : EcsAspect, new()
|
||||
{
|
||||
public readonly A0 a0;
|
||||
public readonly A1 a1;
|
||||
public readonly A2 a2;
|
||||
public readonly A3 a3;
|
||||
public CombinedAspect(Builder b)
|
||||
{
|
||||
a0 = b.Combine<A0>(0);
|
||||
a1 = b.Combine<A1>(1);
|
||||
a2 = b.Combine<A2>(2);
|
||||
a3 = b.Combine<A3>(3);
|
||||
}
|
||||
public readonly A0 a0 = CurrentBuilder.Combine<A0>();
|
||||
public readonly A1 a1 = CurrentBuilder.Combine<A1>();
|
||||
public readonly A2 a2 = CurrentBuilder.Combine<A2>();
|
||||
public readonly A3 a3 = CurrentBuilder.Combine<A3>();
|
||||
public void Deconstruct(out A0 a0, out A1 a1, out A2 a2, out A3 a3)
|
||||
{
|
||||
a0 = this.a0;
|
||||
@ -79,25 +57,17 @@ namespace DCFApixels.DragonECS
|
||||
}
|
||||
|
||||
public sealed class CombinedAspect<A0, A1, A2, A3, A4> : EcsAspect
|
||||
where A0 : EcsAspect
|
||||
where A1 : EcsAspect
|
||||
where A2 : EcsAspect
|
||||
where A3 : EcsAspect
|
||||
where A4 : EcsAspect
|
||||
where A0 : EcsAspect, new()
|
||||
where A1 : EcsAspect, new()
|
||||
where A2 : EcsAspect, new()
|
||||
where A3 : EcsAspect, new()
|
||||
where A4 : EcsAspect, new()
|
||||
{
|
||||
public readonly A0 a0;
|
||||
public readonly A1 a1;
|
||||
public readonly A2 a2;
|
||||
public readonly A3 a3;
|
||||
public readonly A4 a4;
|
||||
public CombinedAspect(Builder b)
|
||||
{
|
||||
a0 = b.Combine<A0>(0);
|
||||
a1 = b.Combine<A1>(1);
|
||||
a2 = b.Combine<A2>(2);
|
||||
a3 = b.Combine<A3>(3);
|
||||
a4 = b.Combine<A4>(4);
|
||||
}
|
||||
public readonly A0 a0 = CurrentBuilder.Combine<A0>();
|
||||
public readonly A1 a1 = CurrentBuilder.Combine<A1>();
|
||||
public readonly A2 a2 = CurrentBuilder.Combine<A2>();
|
||||
public readonly A3 a3 = CurrentBuilder.Combine<A3>();
|
||||
public readonly A4 a4 = CurrentBuilder.Combine<A4>();
|
||||
public void Deconstruct(out A0 a0, out A1 a1, out A2 a2, out A3 a3, out A4 a4)
|
||||
{
|
||||
a0 = this.a0;
|
||||
@ -109,28 +79,19 @@ namespace DCFApixels.DragonECS
|
||||
}
|
||||
|
||||
public sealed class CombinedAspect<A0, A1, A2, A3, A4, A5> : EcsAspect
|
||||
where A0 : EcsAspect
|
||||
where A1 : EcsAspect
|
||||
where A2 : EcsAspect
|
||||
where A3 : EcsAspect
|
||||
where A4 : EcsAspect
|
||||
where A5 : EcsAspect
|
||||
where A0 : EcsAspect, new()
|
||||
where A1 : EcsAspect, new()
|
||||
where A2 : EcsAspect, new()
|
||||
where A3 : EcsAspect, new()
|
||||
where A4 : EcsAspect, new()
|
||||
where A5 : EcsAspect, new()
|
||||
{
|
||||
public readonly A0 a0;
|
||||
public readonly A1 a1;
|
||||
public readonly A2 a2;
|
||||
public readonly A3 a3;
|
||||
public readonly A4 a4;
|
||||
public readonly A5 a5;
|
||||
public CombinedAspect(Builder b)
|
||||
{
|
||||
a0 = b.Combine<A0>(0);
|
||||
a1 = b.Combine<A1>(1);
|
||||
a2 = b.Combine<A2>(2);
|
||||
a3 = b.Combine<A3>(3);
|
||||
a4 = b.Combine<A4>(4);
|
||||
a5 = b.Combine<A5>(5);
|
||||
}
|
||||
public readonly A0 a0 = CurrentBuilder.Combine<A0>();
|
||||
public readonly A1 a1 = CurrentBuilder.Combine<A1>();
|
||||
public readonly A2 a2 = CurrentBuilder.Combine<A2>();
|
||||
public readonly A3 a3 = CurrentBuilder.Combine<A3>();
|
||||
public readonly A4 a4 = CurrentBuilder.Combine<A4>();
|
||||
public readonly A5 a5 = CurrentBuilder.Combine<A5>();
|
||||
public void Deconstruct(out A0 a0, out A1 a1, out A2 a2, out A3 a3, out A4 a4, out A5 a5)
|
||||
{
|
||||
a0 = this.a0;
|
||||
@ -146,21 +107,21 @@ namespace DCFApixels.DragonECS
|
||||
{
|
||||
#region Where 2
|
||||
public static EcsSpan Where<TCollection, A0, A1>(this TCollection entities, out A0 a0, out A1 a1)
|
||||
where A0 : EcsAspect
|
||||
where A1 : EcsAspect
|
||||
where A0 : EcsAspect, new()
|
||||
where A1 : EcsAspect, new()
|
||||
where TCollection : IEntityStorage
|
||||
{
|
||||
return entities.ToSpan().Where(out a0, out a1);
|
||||
}
|
||||
public static EcsSpan Where<A0, A1>(this EcsReadonlyGroup group, out A0 a0, out A1 a1)
|
||||
where A0 : EcsAspect
|
||||
where A1 : EcsAspect
|
||||
where A0 : EcsAspect, new()
|
||||
where A1 : EcsAspect, new()
|
||||
{
|
||||
return group.ToSpan().Where(out a0, out a1);
|
||||
}
|
||||
public static EcsSpan Where<A0, A1>(this EcsSpan span, out A0 a0, out A1 a1)
|
||||
where A0 : EcsAspect
|
||||
where A1 : EcsAspect
|
||||
where A0 : EcsAspect, new()
|
||||
where A1 : EcsAspect, new()
|
||||
{
|
||||
var result = span.Where(out CombinedAspect<A0, A1> combined);
|
||||
(a0, a1) = combined;
|
||||
@ -170,24 +131,24 @@ namespace DCFApixels.DragonECS
|
||||
|
||||
#region Where 3
|
||||
public static EcsSpan Where<TCollection, A0, A1, A2>(this TCollection entities, out A0 a0, out A1 a1, out A2 a2)
|
||||
where A0 : EcsAspect
|
||||
where A1 : EcsAspect
|
||||
where A2 : EcsAspect
|
||||
where A0 : EcsAspect, new()
|
||||
where A1 : EcsAspect, new()
|
||||
where A2 : EcsAspect, new()
|
||||
where TCollection : IEntityStorage
|
||||
{
|
||||
return entities.ToSpan().Where(out a0, out a1, out a2);
|
||||
}
|
||||
public static EcsSpan Where<A0, A1, A2>(this EcsReadonlyGroup group, out A0 a0, out A1 a1, out A2 a2)
|
||||
where A0 : EcsAspect
|
||||
where A1 : EcsAspect
|
||||
where A2 : EcsAspect
|
||||
where A0 : EcsAspect, new()
|
||||
where A1 : EcsAspect, new()
|
||||
where A2 : EcsAspect, new()
|
||||
{
|
||||
return group.ToSpan().Where(out a0, out a1, out a2);
|
||||
}
|
||||
public static EcsSpan Where<A0, A1, A2>(this EcsSpan span, out A0 a0, out A1 a1, out A2 a2)
|
||||
where A0 : EcsAspect
|
||||
where A1 : EcsAspect
|
||||
where A2 : EcsAspect
|
||||
where A0 : EcsAspect, new()
|
||||
where A1 : EcsAspect, new()
|
||||
where A2 : EcsAspect, new()
|
||||
{
|
||||
var result = span.Where(out CombinedAspect<A0, A1, A2> combined);
|
||||
(a0, a1, a2) = combined;
|
||||
@ -197,27 +158,27 @@ namespace DCFApixels.DragonECS
|
||||
|
||||
#region Where 4
|
||||
public static EcsSpan Where<TCollection, A0, A1, A2, A3>(this TCollection entities, out A0 a0, out A1 a1, out A2 a2, out A3 a3)
|
||||
where A0 : EcsAspect
|
||||
where A1 : EcsAspect
|
||||
where A2 : EcsAspect
|
||||
where A3 : EcsAspect
|
||||
where A0 : EcsAspect, new()
|
||||
where A1 : EcsAspect, new()
|
||||
where A2 : EcsAspect, new()
|
||||
where A3 : EcsAspect, new()
|
||||
where TCollection : IEntityStorage
|
||||
{
|
||||
return entities.ToSpan().Where(out a0, out a1, out a2, out a3);
|
||||
}
|
||||
public static EcsSpan Where<A0, A1, A2, A3>(this EcsReadonlyGroup group, out A0 a0, out A1 a1, out A2 a2, out A3 a3)
|
||||
where A0 : EcsAspect
|
||||
where A1 : EcsAspect
|
||||
where A2 : EcsAspect
|
||||
where A3 : EcsAspect
|
||||
where A0 : EcsAspect, new()
|
||||
where A1 : EcsAspect, new()
|
||||
where A2 : EcsAspect, new()
|
||||
where A3 : EcsAspect, new()
|
||||
{
|
||||
return group.ToSpan().Where(out a0, out a1, out a2, out a3);
|
||||
}
|
||||
public static EcsSpan Where<A0, A1, A2, A3>(this EcsSpan span, out A0 a0, out A1 a1, out A2 a2, out A3 a3)
|
||||
where A0 : EcsAspect
|
||||
where A1 : EcsAspect
|
||||
where A2 : EcsAspect
|
||||
where A3 : EcsAspect
|
||||
where A0 : EcsAspect, new()
|
||||
where A1 : EcsAspect, new()
|
||||
where A2 : EcsAspect, new()
|
||||
where A3 : EcsAspect, new()
|
||||
{
|
||||
var result = span.Where(out CombinedAspect<A0, A1, A2, A3> combined);
|
||||
(a0, a1, a2, a3) = combined;
|
||||
@ -227,30 +188,30 @@ namespace DCFApixels.DragonECS
|
||||
|
||||
#region Where 5
|
||||
public static EcsSpan Where<TCollection, A0, A1, A2, A3, A4>(this TCollection entities, out A0 a0, out A1 a1, out A2 a2, out A3 a3, out A4 a4)
|
||||
where A0 : EcsAspect
|
||||
where A1 : EcsAspect
|
||||
where A2 : EcsAspect
|
||||
where A3 : EcsAspect
|
||||
where A4 : EcsAspect
|
||||
where A0 : EcsAspect, new()
|
||||
where A1 : EcsAspect, new()
|
||||
where A2 : EcsAspect, new()
|
||||
where A3 : EcsAspect, new()
|
||||
where A4 : EcsAspect, new()
|
||||
where TCollection : IEntityStorage
|
||||
{
|
||||
return entities.ToSpan().Where(out a0, out a1, out a2, out a3, out a4);
|
||||
}
|
||||
public static EcsSpan Where<A0, A1, A2, A3, A4>(this EcsReadonlyGroup group, out A0 a0, out A1 a1, out A2 a2, out A3 a3, out A4 a4)
|
||||
where A0 : EcsAspect
|
||||
where A1 : EcsAspect
|
||||
where A2 : EcsAspect
|
||||
where A3 : EcsAspect
|
||||
where A4 : EcsAspect
|
||||
where A0 : EcsAspect, new()
|
||||
where A1 : EcsAspect, new()
|
||||
where A2 : EcsAspect, new()
|
||||
where A3 : EcsAspect, new()
|
||||
where A4 : EcsAspect, new()
|
||||
{
|
||||
return group.ToSpan().Where(out a0, out a1, out a2, out a3, out a4);
|
||||
}
|
||||
public static EcsSpan Where<A0, A1, A2, A3, A4>(this EcsSpan span, out A0 a0, out A1 a1, out A2 a2, out A3 a3, out A4 a4)
|
||||
where A0 : EcsAspect
|
||||
where A1 : EcsAspect
|
||||
where A2 : EcsAspect
|
||||
where A3 : EcsAspect
|
||||
where A4 : EcsAspect
|
||||
where A0 : EcsAspect, new()
|
||||
where A1 : EcsAspect, new()
|
||||
where A2 : EcsAspect, new()
|
||||
where A3 : EcsAspect, new()
|
||||
where A4 : EcsAspect, new()
|
||||
{
|
||||
var result = span.Where(out CombinedAspect<A0, A1, A2, A3, A4> combined);
|
||||
(a0, a1, a2, a3, a4) = combined;
|
||||
@ -260,33 +221,33 @@ namespace DCFApixels.DragonECS
|
||||
|
||||
#region Where 6
|
||||
public static EcsSpan Where<TCollection, A0, A1, A2, A3, A4, A5>(this TCollection entities, out A0 a0, out A1 a1, out A2 a2, out A3 a3, out A4 a4, out A5 a5)
|
||||
where A0 : EcsAspect
|
||||
where A1 : EcsAspect
|
||||
where A2 : EcsAspect
|
||||
where A3 : EcsAspect
|
||||
where A4 : EcsAspect
|
||||
where A5 : EcsAspect
|
||||
where A0 : EcsAspect, new()
|
||||
where A1 : EcsAspect, new()
|
||||
where A2 : EcsAspect, new()
|
||||
where A3 : EcsAspect, new()
|
||||
where A4 : EcsAspect, new()
|
||||
where A5 : EcsAspect, new()
|
||||
where TCollection : IEntityStorage
|
||||
{
|
||||
return entities.ToSpan().Where(out a0, out a1, out a2, out a3, out a4, out a5);
|
||||
}
|
||||
public static EcsSpan Where<A0, A1, A2, A3, A4, A5>(this EcsReadonlyGroup group, out A0 a0, out A1 a1, out A2 a2, out A3 a3, out A4 a4, out A5 a5)
|
||||
where A0 : EcsAspect
|
||||
where A1 : EcsAspect
|
||||
where A2 : EcsAspect
|
||||
where A3 : EcsAspect
|
||||
where A4 : EcsAspect
|
||||
where A5 : EcsAspect
|
||||
where A0 : EcsAspect, new()
|
||||
where A1 : EcsAspect, new()
|
||||
where A2 : EcsAspect, new()
|
||||
where A3 : EcsAspect, new()
|
||||
where A4 : EcsAspect, new()
|
||||
where A5 : EcsAspect, new()
|
||||
{
|
||||
return group.ToSpan().Where(out a0, out a1, out a2, out a3, out a4, out a5);
|
||||
}
|
||||
public static EcsSpan Where<A0, A1, A2, A3, A4, A5>(this EcsSpan span, out A0 a0, out A1 a1, out A2 a2, out A3 a3, out A4 a4, out A5 a5)
|
||||
where A0 : EcsAspect
|
||||
where A1 : EcsAspect
|
||||
where A2 : EcsAspect
|
||||
where A3 : EcsAspect
|
||||
where A4 : EcsAspect
|
||||
where A5 : EcsAspect
|
||||
where A0 : EcsAspect, new()
|
||||
where A1 : EcsAspect, new()
|
||||
where A2 : EcsAspect, new()
|
||||
where A3 : EcsAspect, new()
|
||||
where A4 : EcsAspect, new()
|
||||
where A5 : EcsAspect, new()
|
||||
{
|
||||
var result = span.Where(out CombinedAspect<A0, A1, A2, A3, A4, A5> combined);
|
||||
(a0, a1, a2, a3, a4, a5) = combined;
|
||||
@ -296,21 +257,21 @@ namespace DCFApixels.DragonECS
|
||||
|
||||
#region WhereToGroup 2
|
||||
public static EcsReadonlyGroup WhereToGroup<TCollection, A0, A1>(this TCollection entities, out A0 a0, out A1 a1)
|
||||
where A0 : EcsAspect
|
||||
where A1 : EcsAspect
|
||||
where A0 : EcsAspect, new()
|
||||
where A1 : EcsAspect, new()
|
||||
where TCollection : IEntityStorage
|
||||
{
|
||||
return entities.ToSpan().WhereToGroup(out a0, out a1);
|
||||
}
|
||||
public static EcsReadonlyGroup WhereToGroup<A0, A1>(this EcsReadonlyGroup group, out A0 a0, out A1 a1)
|
||||
where A0 : EcsAspect
|
||||
where A1 : EcsAspect
|
||||
where A0 : EcsAspect, new()
|
||||
where A1 : EcsAspect, new()
|
||||
{
|
||||
return group.ToSpan().WhereToGroup(out a0, out a1);
|
||||
}
|
||||
public static EcsReadonlyGroup WhereToGroup<A0, A1>(this EcsSpan span, out A0 a0, out A1 a1)
|
||||
where A0 : EcsAspect
|
||||
where A1 : EcsAspect
|
||||
where A0 : EcsAspect, new()
|
||||
where A1 : EcsAspect, new()
|
||||
{
|
||||
var result = span.WhereToGroup(out CombinedAspect<A0, A1> combined);
|
||||
(a0, a1) = combined;
|
||||
@ -320,24 +281,24 @@ namespace DCFApixels.DragonECS
|
||||
|
||||
#region WhereToGroup 3
|
||||
public static EcsReadonlyGroup WhereToGroup<TCollection, A0, A1, A2>(this TCollection entities, out A0 a0, out A1 a1, out A2 a2)
|
||||
where A0 : EcsAspect
|
||||
where A1 : EcsAspect
|
||||
where A2 : EcsAspect
|
||||
where A0 : EcsAspect, new()
|
||||
where A1 : EcsAspect, new()
|
||||
where A2 : EcsAspect, new()
|
||||
where TCollection : IEntityStorage
|
||||
{
|
||||
return entities.ToSpan().WhereToGroup(out a0, out a1, out a2);
|
||||
}
|
||||
public static EcsReadonlyGroup WhereToGroup<A0, A1, A2>(this EcsReadonlyGroup group, out A0 a0, out A1 a1, out A2 a2)
|
||||
where A0 : EcsAspect
|
||||
where A1 : EcsAspect
|
||||
where A2 : EcsAspect
|
||||
where A0 : EcsAspect, new()
|
||||
where A1 : EcsAspect, new()
|
||||
where A2 : EcsAspect, new()
|
||||
{
|
||||
return group.ToSpan().WhereToGroup(out a0, out a1, out a2);
|
||||
}
|
||||
public static EcsReadonlyGroup WhereToGroup<A0, A1, A2>(this EcsSpan span, out A0 a0, out A1 a1, out A2 a2)
|
||||
where A0 : EcsAspect
|
||||
where A1 : EcsAspect
|
||||
where A2 : EcsAspect
|
||||
where A0 : EcsAspect, new()
|
||||
where A1 : EcsAspect, new()
|
||||
where A2 : EcsAspect, new()
|
||||
{
|
||||
var result = span.WhereToGroup(out CombinedAspect<A0, A1, A2> combined);
|
||||
(a0, a1, a2) = combined;
|
||||
@ -347,27 +308,27 @@ namespace DCFApixels.DragonECS
|
||||
|
||||
#region WhereToGroup 4
|
||||
public static EcsReadonlyGroup WhereToGroup<TCollection, A0, A1, A2, A3>(this TCollection entities, out A0 a0, out A1 a1, out A2 a2, out A3 a3)
|
||||
where A0 : EcsAspect
|
||||
where A1 : EcsAspect
|
||||
where A2 : EcsAspect
|
||||
where A3 : EcsAspect
|
||||
where A0 : EcsAspect, new()
|
||||
where A1 : EcsAspect, new()
|
||||
where A2 : EcsAspect, new()
|
||||
where A3 : EcsAspect, new()
|
||||
where TCollection : IEntityStorage
|
||||
{
|
||||
return entities.ToSpan().WhereToGroup(out a0, out a1, out a2, out a3);
|
||||
}
|
||||
public static EcsReadonlyGroup WhereToGroup<A0, A1, A2, A3>(this EcsReadonlyGroup group, out A0 a0, out A1 a1, out A2 a2, out A3 a3)
|
||||
where A0 : EcsAspect
|
||||
where A1 : EcsAspect
|
||||
where A2 : EcsAspect
|
||||
where A3 : EcsAspect
|
||||
where A0 : EcsAspect, new()
|
||||
where A1 : EcsAspect, new()
|
||||
where A2 : EcsAspect, new()
|
||||
where A3 : EcsAspect, new()
|
||||
{
|
||||
return group.ToSpan().WhereToGroup(out a0, out a1, out a2, out a3);
|
||||
}
|
||||
public static EcsReadonlyGroup WhereToGroup<A0, A1, A2, A3>(this EcsSpan span, out A0 a0, out A1 a1, out A2 a2, out A3 a3)
|
||||
where A0 : EcsAspect
|
||||
where A1 : EcsAspect
|
||||
where A2 : EcsAspect
|
||||
where A3 : EcsAspect
|
||||
where A0 : EcsAspect, new()
|
||||
where A1 : EcsAspect, new()
|
||||
where A2 : EcsAspect, new()
|
||||
where A3 : EcsAspect, new()
|
||||
{
|
||||
var result = span.WhereToGroup(out CombinedAspect<A0, A1, A2, A3> combined);
|
||||
(a0, a1, a2, a3) = combined;
|
||||
@ -377,30 +338,30 @@ namespace DCFApixels.DragonECS
|
||||
|
||||
#region WhereToGroup 5
|
||||
public static EcsReadonlyGroup WhereToGroup<TCollection, A0, A1, A2, A3, A4>(this TCollection entities, out A0 a0, out A1 a1, out A2 a2, out A3 a3, out A4 a4)
|
||||
where A0 : EcsAspect
|
||||
where A1 : EcsAspect
|
||||
where A2 : EcsAspect
|
||||
where A3 : EcsAspect
|
||||
where A4 : EcsAspect
|
||||
where A0 : EcsAspect, new()
|
||||
where A1 : EcsAspect, new()
|
||||
where A2 : EcsAspect, new()
|
||||
where A3 : EcsAspect, new()
|
||||
where A4 : EcsAspect, new()
|
||||
where TCollection : IEntityStorage
|
||||
{
|
||||
return entities.ToSpan().WhereToGroup(out a0, out a1, out a2, out a3, out a4);
|
||||
}
|
||||
public static EcsReadonlyGroup WhereToGroup<A0, A1, A2, A3, A4>(this EcsReadonlyGroup group, out A0 a0, out A1 a1, out A2 a2, out A3 a3, out A4 a4)
|
||||
where A0 : EcsAspect
|
||||
where A1 : EcsAspect
|
||||
where A2 : EcsAspect
|
||||
where A3 : EcsAspect
|
||||
where A4 : EcsAspect
|
||||
where A0 : EcsAspect, new()
|
||||
where A1 : EcsAspect, new()
|
||||
where A2 : EcsAspect, new()
|
||||
where A3 : EcsAspect, new()
|
||||
where A4 : EcsAspect, new()
|
||||
{
|
||||
return group.ToSpan().WhereToGroup(out a0, out a1, out a2, out a3, out a4);
|
||||
}
|
||||
public static EcsReadonlyGroup WhereToGroup<A0, A1, A2, A3, A4>(this EcsSpan span, out A0 a0, out A1 a1, out A2 a2, out A3 a3, out A4 a4)
|
||||
where A0 : EcsAspect
|
||||
where A1 : EcsAspect
|
||||
where A2 : EcsAspect
|
||||
where A3 : EcsAspect
|
||||
where A4 : EcsAspect
|
||||
where A0 : EcsAspect, new()
|
||||
where A1 : EcsAspect, new()
|
||||
where A2 : EcsAspect, new()
|
||||
where A3 : EcsAspect, new()
|
||||
where A4 : EcsAspect, new()
|
||||
{
|
||||
var result = span.WhereToGroup(out CombinedAspect<A0, A1, A2, A3, A4> combined);
|
||||
(a0, a1, a2, a3, a4) = combined;
|
||||
@ -410,33 +371,33 @@ namespace DCFApixels.DragonECS
|
||||
|
||||
#region WhereToGroup 6
|
||||
public static EcsReadonlyGroup WhereToGroup<TCollection, A0, A1, A2, A3, A4, A5>(this TCollection entities, out A0 a0, out A1 a1, out A2 a2, out A3 a3, out A4 a4, out A5 a5)
|
||||
where A0 : EcsAspect
|
||||
where A1 : EcsAspect
|
||||
where A2 : EcsAspect
|
||||
where A3 : EcsAspect
|
||||
where A4 : EcsAspect
|
||||
where A5 : EcsAspect
|
||||
where A0 : EcsAspect, new()
|
||||
where A1 : EcsAspect, new()
|
||||
where A2 : EcsAspect, new()
|
||||
where A3 : EcsAspect, new()
|
||||
where A4 : EcsAspect, new()
|
||||
where A5 : EcsAspect, new()
|
||||
where TCollection : IEntityStorage
|
||||
{
|
||||
return entities.ToSpan().WhereToGroup(out a0, out a1, out a2, out a3, out a4, out a5);
|
||||
}
|
||||
public static EcsReadonlyGroup WhereToGroup<A0, A1, A2, A3, A4, A5>(this EcsReadonlyGroup group, out A0 a0, out A1 a1, out A2 a2, out A3 a3, out A4 a4, out A5 a5)
|
||||
where A0 : EcsAspect
|
||||
where A1 : EcsAspect
|
||||
where A2 : EcsAspect
|
||||
where A3 : EcsAspect
|
||||
where A4 : EcsAspect
|
||||
where A5 : EcsAspect
|
||||
where A0 : EcsAspect, new()
|
||||
where A1 : EcsAspect, new()
|
||||
where A2 : EcsAspect, new()
|
||||
where A3 : EcsAspect, new()
|
||||
where A4 : EcsAspect, new()
|
||||
where A5 : EcsAspect, new()
|
||||
{
|
||||
return group.ToSpan().WhereToGroup(out a0, out a1, out a2, out a3, out a4, out a5);
|
||||
}
|
||||
public static EcsReadonlyGroup WhereToGroup<A0, A1, A2, A3, A4, A5>(this EcsSpan span, out A0 a0, out A1 a1, out A2 a2, out A3 a3, out A4 a4, out A5 a5)
|
||||
where A0 : EcsAspect
|
||||
where A1 : EcsAspect
|
||||
where A2 : EcsAspect
|
||||
where A3 : EcsAspect
|
||||
where A4 : EcsAspect
|
||||
where A5 : EcsAspect
|
||||
where A0 : EcsAspect, new()
|
||||
where A1 : EcsAspect, new()
|
||||
where A2 : EcsAspect, new()
|
||||
where A3 : EcsAspect, new()
|
||||
where A4 : EcsAspect, new()
|
||||
where A5 : EcsAspect, new()
|
||||
{
|
||||
var result = span.WhereToGroup(out CombinedAspect<A0, A1, A2, A3, A4, A5> combined);
|
||||
(a0, a1, a2, a3, a4, a5) = combined;
|
||||
|
@ -2,7 +2,6 @@
|
||||
using DCFApixels.DragonECS.PoolsCore;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Reflection;
|
||||
using System.Runtime.CompilerServices;
|
||||
|
||||
namespace DCFApixels.DragonECS
|
||||
@ -23,7 +22,18 @@ namespace DCFApixels.DragonECS
|
||||
}
|
||||
return _constructorBuildersStack;
|
||||
}
|
||||
|
||||
protected static Builder CurrentBuilder
|
||||
{
|
||||
get
|
||||
{
|
||||
var buildersStack = GetBuildersStack();
|
||||
if (buildersStack.Count <= 0)
|
||||
{
|
||||
Throw.Aspect_CanOnlyBeUsedDuringInitialization(nameof(CurrentBuilder));
|
||||
}
|
||||
return buildersStack.Peek();
|
||||
}
|
||||
}
|
||||
protected static IncludeMarker Inc
|
||||
{
|
||||
get
|
||||
@ -94,6 +104,7 @@ namespace DCFApixels.DragonECS
|
||||
{
|
||||
private EcsWorld _world;
|
||||
private EcsMask.Builder _maskBuilder;
|
||||
|
||||
public IncludeMarker Inc
|
||||
{
|
||||
get { return new IncludeMarker(this); }
|
||||
@ -114,7 +125,7 @@ namespace DCFApixels.DragonECS
|
||||
_world = world;
|
||||
_maskBuilder = EcsMask.New(world);
|
||||
}
|
||||
internal static unsafe TAspect New<TAspect>(EcsWorld world) where TAspect : EcsAspect
|
||||
internal static unsafe TAspect New<TAspect>(EcsWorld world) where TAspect : EcsAspect, new()
|
||||
{
|
||||
Builder builder = new Builder(world);
|
||||
Type aspectType = typeof(TAspect);
|
||||
@ -123,20 +134,7 @@ namespace DCFApixels.DragonECS
|
||||
var buildersStack = GetBuildersStack();
|
||||
buildersStack.Push(builder);
|
||||
|
||||
//TODO добавить оповещение что инициализация через конструктор не работает
|
||||
#if !REFLECTION_DISABLED
|
||||
ConstructorInfo constructorInfo = aspectType.GetConstructor(BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic, null, new Type[] { typeof(Builder) }, null);
|
||||
if (constructorInfo != null)
|
||||
{
|
||||
newAspect = (EcsAspect)constructorInfo.Invoke(new object[] { builder });
|
||||
}
|
||||
else
|
||||
#endif
|
||||
{
|
||||
#pragma warning disable IL2091 // Target generic argument does not satisfy 'DynamicallyAccessedMembersAttribute' in target method or type. The generic parameter of the source method or type does not have matching annotations.
|
||||
newAspect = Activator.CreateInstance<TAspect>();
|
||||
#pragma warning restore IL2091
|
||||
}
|
||||
newAspect = new TAspect();
|
||||
newAspect.Init(builder);
|
||||
buildersStack.Pop();
|
||||
newAspect._source = world;
|
||||
@ -194,13 +192,13 @@ namespace DCFApixels.DragonECS
|
||||
{
|
||||
_maskBuilder.Exclude(type);
|
||||
}
|
||||
public TOtherAspect Combine<TOtherAspect>(int order = 0) where TOtherAspect : EcsAspect
|
||||
public TOtherAspect Combine<TOtherAspect>(int order = 0) where TOtherAspect : EcsAspect, new()
|
||||
{
|
||||
var result = _world.GetAspect<TOtherAspect>();
|
||||
_maskBuilder.Combine(result.Mask);
|
||||
return result;
|
||||
}
|
||||
public TOtherAspect Except<TOtherAspect>(int order = 0) where TOtherAspect : EcsAspect
|
||||
public TOtherAspect Except<TOtherAspect>(int order = 0) where TOtherAspect : EcsAspect, new()
|
||||
{
|
||||
var result = _world.GetAspect<TOtherAspect>();
|
||||
_maskBuilder.Except(result.Mask);
|
||||
|
@ -19,7 +19,7 @@ namespace DCFApixels.DragonECS
|
||||
}
|
||||
}
|
||||
internal readonly struct AspectCache<T> : IEcsWorldComponent<AspectCache<T>>
|
||||
where T : EcsAspect
|
||||
where T : EcsAspect, new()
|
||||
{
|
||||
public readonly T instance;
|
||||
public AspectCache(T instance) => this.instance = instance;
|
||||
|
@ -211,7 +211,7 @@ namespace DCFApixels.DragonECS
|
||||
[UnityEngine.Scripting.Preserve]
|
||||
#endif
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public TAspect GetAspect<TAspect>() where TAspect : EcsAspect
|
||||
public TAspect GetAspect<TAspect>() where TAspect : EcsAspect, new()
|
||||
{
|
||||
return Get<AspectCache<TAspect>>().instance;
|
||||
}
|
||||
|
@ -7,7 +7,7 @@ namespace DCFApixels.DragonECS
|
||||
[Il2CppSetOption(Option.NullChecks, false)]
|
||||
[Il2CppSetOption(Option.ArrayBoundsChecks, false)]
|
||||
#endif
|
||||
public sealed class EcsWhereExecutor<TAspect> : EcsQueryExecutor where TAspect : EcsAspect
|
||||
public sealed class EcsWhereExecutor<TAspect> : EcsQueryExecutor where TAspect : EcsAspect, new()
|
||||
{
|
||||
private TAspect _aspect;
|
||||
private int[] _filteredEntities;
|
||||
|
@ -7,7 +7,7 @@ namespace DCFApixels.DragonECS
|
||||
[Il2CppSetOption(Option.NullChecks, false)]
|
||||
[Il2CppSetOption(Option.ArrayBoundsChecks, false)]
|
||||
#endif
|
||||
public sealed class EcsWhereToGroupExecutor<TAspect> : EcsQueryExecutor where TAspect : EcsAspect
|
||||
public sealed class EcsWhereToGroupExecutor<TAspect> : EcsQueryExecutor where TAspect : EcsAspect, new()
|
||||
{
|
||||
private TAspect _aspect;
|
||||
private EcsGroup _filteredGroup;
|
||||
|
@ -8,18 +8,18 @@
|
||||
{
|
||||
#region Where
|
||||
public static EcsSpan Where<TCollection, TAspect>(this TCollection entities, out TAspect aspect)
|
||||
where TAspect : EcsAspect
|
||||
where TAspect : EcsAspect, new()
|
||||
where TCollection : IEntityStorage
|
||||
{
|
||||
return entities.ToSpan().Where(out aspect);
|
||||
}
|
||||
public static EcsSpan Where<TAspect>(this EcsReadonlyGroup group, out TAspect aspect)
|
||||
where TAspect : EcsAspect
|
||||
where TAspect : EcsAspect, new()
|
||||
{
|
||||
return group.ToSpan().Where(out aspect);
|
||||
}
|
||||
public static EcsSpan Where<TAspect>(this EcsSpan span, out TAspect aspect)
|
||||
where TAspect : EcsAspect
|
||||
where TAspect : EcsAspect, new()
|
||||
{
|
||||
EcsWorld world = span.World;
|
||||
if (world.IsEnableReleaseDelEntBuffer)
|
||||
@ -34,18 +34,18 @@
|
||||
|
||||
#region WhereToGroup
|
||||
public static EcsReadonlyGroup WhereToGroup<TCollection, TAspect>(this TCollection entities, out TAspect aspect)
|
||||
where TAspect : EcsAspect
|
||||
where TAspect : EcsAspect, new()
|
||||
where TCollection : IEntityStorage
|
||||
{
|
||||
return entities.ToSpan().WhereToGroup(out aspect);
|
||||
}
|
||||
public static EcsReadonlyGroup WhereToGroup<TAspect>(this EcsReadonlyGroup group, out TAspect aspect)
|
||||
where TAspect : EcsAspect
|
||||
where TAspect : EcsAspect, new()
|
||||
{
|
||||
return group.ToSpan().WhereToGroup(out aspect);
|
||||
}
|
||||
public static EcsReadonlyGroup WhereToGroup<TAspect>(this EcsSpan span, out TAspect aspect)
|
||||
where TAspect : EcsAspect
|
||||
where TAspect : EcsAspect, new()
|
||||
{
|
||||
EcsWorld world = span.World;
|
||||
if (world.IsEnableReleaseDelEntBuffer)
|
||||
|
Loading…
Reference in New Issue
Block a user